1. 튜플의 연산
>>> t = () # 공 튜플
>>> t = (1, 2, 3) # 괄호 사용
>>> t = 1, 2, 3
>>> r = (1,)
>>> r = 1, # 괄호는 없어도 콤마(,)는 무조건 있어야 함
>>> t * 2 # 반복
(1, 2, 3, 1, 2, 3)
>>> t + ('PyKUG', 'user') # 연결
(1, 2, 3, 'PyKUG', 'user')
>>> print t[0], t[1:3] # 인덱싱, 슬라이싱
1 (2, 3)
>>> len(t) # 길이
3
>>> 1 in t # 멤버십 테스트
True
>>> t[10] = 100 # 튜플은 변경 불가능(Imumutable) 자료형
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
t[10] = 100
TypeError: 'tuple' object does not support item assignment
>>> t = (1, 2, 3)
>>> u = t, 4, 5 # 중첩
>>> u
((1, 2, 3), 4, 5)
>>> x, y = 1, 2 # 복수개의 자료 치환
>>> x, y = y, x # swap
>>> x, y
(2, 1)
2. 패킹과 언팩킹
>>> t = 1, 2, 'hello' # 팩킹
>>> x, y, z = t # 언팩킹
>>> # 리스트
>>> a = ['foo', 'bar', 4, 5] # 팩킹
>>> [x, y, z, w] = a # 언팩킹
3. 리스트와의 공통점과 차이점
1) 공통점
- 임의의 객체를 저장할 수 있다
- 시퀀스 자료형(인덱싱, 슬라이싱, 연결, 반복 지원)
1) 차이점
- 문자열과 같은 변경 불가능(Immutable) 시퀀스형이다. 따라서 아이템을 변경하려면 슬라이싱과 연결(Concatenation)을 이용해야 한다.
- 메쏘드를 가지지 않는다.
3) 상호 변환
>>> L = list(T)
>>> L[0] = 100
>>> L
[100, 2, 3, 4, 5]
>>> T = tuple(L)
>>> T
(100, 2, 3, 4, 5)
4. 튜플 사용하는 경우
1) 함수에 있어서 하나 이상의 값을 리턴하는 경우
return a+b, a-b
>>> x, y = calc(5, 4)
2) 문자열 포매팅
id : creaplz, name : hong
3) 튜플에 있는 값들을 함수 인수로 사용할 때(가변 인수)
>>> calc(*args)
(9, -1)
4) 고정된 값을 표현
>>> d.items()
[('two', 2), ('one', 1)]