3. 파이썬(Python) 튜플(Tuple)
튜플(Tuple)이란?
튜플(tuple)이란 리스트처럼 여러 개의 데이터를 담아두는 데 사용합니다.
튜플과 리스트의 차이점은 두 가지가 있습니다.
1) 리스트는 선언을 할 때 ‘대괄호([])’를 사용하지만 튜플은 ‘소괄호(())’를 사용합니다.
2) 리스트는 리스트 내의 값을 생성, 삭제, 변경이 가능하지만 튜플은 그 값을 바꿀 수 없습니다.
1. 튜플 사용 방법
1_1. 비어있는 튜플형
>>> t1 = ()
>>> t1
()
1_2. 소괄호와 소괄호생략
>>> t4 = (1,2,3)
>>> t5 = 1,2,3
>>> t4
(1, 2, 3)
>>> t5
(1, 2, 3)
연속된 값을 이용할 땐 소괄호를 안써도 무방합니다.
1_3. 하나의 값만 가질 때
>>> t2 =(1,)
>>> t3 = 1
>>> t2
(1,)
>>> t3
1
하나의 값을 가질 때는 (,)를 써야합니다. 쓰지 않게 되면 일반 변수로 분류 됩니다.
1_4. 문자형
>>> t6 = ('a','b')
>>> t6
('a', 'b')
튜플도 문자형의 값을 가질 수 있습니다.
1_5. 이중 튜플형
>>> t7 = ('a','b',('ab','cd'))
>>> t7
('a', 'b', ('ab', 'cd'))
이중으로 튜플의 값을 넣을 수 있습니다.
튜플과 리스트 무엇을 사용해야 할까요?
앞서 튜플과 리스트 차이점을 본 것처럼 리스트는 튜플이 지원하는 기능을 거의 다 가지고 있지만, 튜플은 리스트의 기능이 많이 빠져있습니다. 튜플과 리스트의 가장 큰 차이점은 값의 변화 가능 여부입니다. 즉, 값을 변화시키고 싶다면 리스트를 사용해야 하고 값을 변화시키고 싶지 않다면 튜플을 사용하면 됩니다.
2. 튜플의 값을 변경할 때
2_1. 튜플의 값 변경
>>> t = (1,2,3,'a','b','c')
>>> t
(1, 2, 3, 'a', 'b', 'c')
>>> t[1]
2
>>> t[1] = 5
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
t[1] = 5
TypeError: 'tuple' object does not support item assignment
>>> t[3] = 'd'
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
t[3] = 'd'
TypeError: 'tuple' object does not support item assignment
만약 튜플안의 값을 변경하려고 한다면 위와 같이 오류가 발생합니다.
2_2. 튜플의 값 삭제
>>> t
(1, 2, 3, 'a', 'b', 'c')
>>> t[1]
2
>>> t[1] = ()
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
t[1] = ()
TypeError: 'tuple' object does not support item assignment
>>> del t[1]
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
del t[1]
TypeError: 'tuple' object doesn't support item deletion
리스트에서 사용했던 삭제 방법을 해보았지만 역시나 오류를 출력합니다.
3. 튜플의 인덱싱(Indexing) 및 슬라이싱(Slicing)
- 인덱싱(Indexing)이란 무엇인가를 ‘가르킨다’라는 의미입니다.
- 슬라이싱(Slicing)이란 무엇인가를 ‘잘라낸다’라는 의미입니다.
3_1. 튜플의 인덱싱(Indexing) 사용 하기
>>> t
(1, 2, 3, 'a', 'b', 'c')
>>> t[0]
1
>>> t[3]
'a'
3_1. 튜플의 슬라이싱(Slicing) 사용 하기
>>> t
(1, 2, 3, 'a', 'b', 'c')
>>> t[:3]
(1, 2, 3)
>>> t[3:]
('a', 'b', 'c')
4. 튜플의 연산자
튜플의 연산자는 ‘+’(더하기)와 ‘*’(반복하기)를 사용할 수 있습니다. (문자열, 리스트와 동일합니다.)
4_1. 튜플의 (+) 연산자
>>> t1 = (1, 2, 3)
>>> t2 = ('a', 'b', 'c')
>>> t3 = t1 + t2
>>> t3
(1, 2, 3, 'a', 'b', 'c')
4_2. 튜플의 (*) 연산자
>>> t4 = (1,2,3,4)
>>> t5 = t4 * 2
>>> t5
(1, 2, 3, 4, 1, 2, 3, 4)