본문 바로가기

프로그래밍 언어/Python

[Python 자료형] 튜플 (Tuple)


[Python 자료형] 튜플 (Tuple)


튜플 자료형

튜플 자료형은 리스트 자료형과 유사하지만 값을 바꿀 수 없다는 것이 다르다. 별로 쓰임이 없을 것 같지만 알게 모르게 많이 쓰이는 자료형이다.

튜플은 소괄호 묶어서 표현하거나 ,(쉼표)를 이용해서 표현한다.

1
2
3
4
5
6
7
8
# 튜플 선언
tuple1 = (123)
tuple2 = 123
tuple3 = 1,
 
print tuple1
print tuple2
print tuple3
cs

1
2
3
(123)
(123)
(1,)
cs

위와 같이 튜플은 소괄호를 사용하지 않고 ,(쉼표)를 이용해 나열해 사용할 수 있다. 원소가 하나인 튜플은 반드시 원소 뒤에 ,(쉼표)를 붙여야 한다.


소괄호가 없어도 된다는 특징 덕에 튜플은 여러 형태로 사용된다.

- SWAP (값 서로 변경)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 튜플이 없을 때
str1 = 'a'
str2 = 'b'
 
temp = str1
str1 = str2
str2 = temp
 
print str1, str2
 
# 파이썬
str3 = 'a'
str4 = 'b'
 
str3, str4 = str4, str3
#(str3, str4) = (str4, str3)
 
print str3, str4
cs

1
2
b a
b a
cs

- 매개변수 가변인자 (매개변수로 몇개가 들어올지 모르는 경우)
1
2
3
4
5
6
# 매개변수가 반드시 하나 이상 들어올 때
# 처음 매개변수는 num1, 나머지는 튜플에 저장
def VarargFunc(num1, *nums):
    print num1, nums
 
VarargFunc(1)
cs

1
(23456789)
cs


튜플 특징
튜플은 직접적으로 원소를 변경할 수 없다. 변경하려면 오려 붙이는 식으로 해야한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 튜플 선언
tuple = (1,2,3,4,5)
 
# 튜플은 직접적으로 요소 변경 불가능
tuple[2= 10 #ERROR!!
 
# 인덱싱이나 슬라이싱을 이용해서 변경
 
# tuple + int + tuple 자료형 불일치
tuple2 = tuple[0:2]+10+tuple[3:] #ERROR!!
 
# tuple + tuple + tuple 자료형 일치
tuple2 = tuple[0:2]+(10,)+tuple[3:]
print tuple2
cs

1
(121045)
cs

튜플에서 리스트로, 리스트에서 튜플로 변경이 가능하다.

1
2
3
4
5
6
7
8
9
10
# 튜플 선언
tup = (1,2,3,4,5)
 
# 튜플 -> 리스트
tupleToList = list(tup)
print tupleToList
 
# 리스트 -> 튜플
listToTuple = tuple(tupleToList)
print listToTuple
cs

1
2
[12345]
(12345)

cs


튜플 + 튜플, 튜플 * 숫자 연산도 가능하다.

1
2
3
4
5
6
7
# 튜플 선언
tup1 = (1,2,3)
tup2 = (45)
tup3 = tup1 + tup2
 
print tup3
print tup1*3
cs

1
2
(12345)
(123123123)
cs