1. 튜플 (Tuple)
Tuple은 리스트와 비슷하게 여러 요소들을 갖는 컬렉션이다. 리스트와 다른 점은 Tuple은 새로운 요소를 추가하거나 갱신, 삭제하는 일을 할 수 없다. 즉, Tuple은 한변 결정된 요소를 변경할 수 없는 Immutable 데이타 타입이다. 따라서, Tuple은 컬렉션이 항상 고정된 요소값을 갖기를 원하거나 변경되지 말아야 하는 경우에 사용하게 된다.
튜플의 요소들은 둥근 괄호(...) 를 사용하여 컬렉션을 표현하는데, 각 요소들은 서로 다른 타입이 될 수 있으며, 컴마(,)로 구분한다. 요소가 없는 빈 튜플은 "()"와 같이 표현한다.
t = ("AB", 10, False) print(t)
특히 요소가 하나일 경우에는 요소 뒤에 콤마를 붙여 명시적으로 Tuple임을 표시해야 한다. 아래 예제를 보면 첫번째 (123) 의 경우, 이는 산술식의 괄호로 인식하여 t1의 타입이 정수가 된다. 이러한 혼동을 방지하기 위해 t2 에서 처럼 (123,) 콤마를 붙여 명시적으로 Tuple임을 표시한다.
t1 = (123) print(t1) # int 타입 t2 = (123,) print(t2) # tuple 타입
2. Tuple 인덱싱과 슬라이싱
Tuple은 리스트와 마찬가지로 한 요소를 리턴하는 인덱싱과 특정 부분집합을 리턴하는 슬라이싱을 지원한다. 단, 요소값을 변경하거나 추가 혹은 삭제하는 일은 할 수 없다.
t = (1, 5, 10) # 인덱스 second = t[1] # 5 last = t[-1] # 10 # 슬라이스 s = t[1:2] # (5) s = t[1:] # (5, 10)
3. Tuple 병합과 반복
Tuple은 리스트와 마찬가지로 두 개의 튜플을 병합하기 위해 플러스(+)를 사용하고, 하나의 튜플을 N 번 반복하기 위해서는 "튜플 * N"와 같이 표현한다.
# 병합 a = (1, 2) b = (3, 4, 5) c = a + b print(c) # (1, 2, 3, 4, 5) # 반복 d = a * 3 # 혹은 "d = 3 * a" 도 동일 print(d) # (1, 2, 1, 2, 1, 2)
4. Tuple 변수 할당
Tuple 데이타를 변수에 할당할 때, 각 요소를 각각 다른 변수에 할당할 수도 있다. 예를 들어, 아래 예제에서 첫번째 예의 name 변수는 튜플 전체를 할당받는 변수이지만, 두번째의 firstname, lastname 변수는 튜플에 있는 각 요소를 하나씩 할당받는 변수들이다.
name = ("John", "Kim") print(name) # 출력: ('John', 'Kim') firstname, lastname = ("John", "Kim") print(lastname, ",", firstname) # 출력: Kim, John