튜플(tuple)은 리스트와 매우 비슷한 자료구조이지만 「한 번 만들면 바꿀 수 없다」는 결정적 차이가 있습니다.
소괄호 ( ) 또는 괄호 없이 쉼표로 만듭니다.
point = (3, 4) 또는 point = 3, 4 두 형식 모두 가능합니다.
튜플의 가장 큰 매력은 「불변(immutable)」이라는 점입니다.
point[0] = 5처럼 값을 바꾸려 하면 오류가 납니다.
이 제약이 단점 같지만 「실수로 바뀔 수 없는 안전성」이라는 큰 장점이 됩니다.
좌표·날짜·RGB 색상처럼 「의미 있는 묶음」에 자주 쓰입니다.
튜플의 두 번째 매력은 「언패킹(unpacking)」입니다.
x, y = (3, 4) 한 줄로 두 변수에 값을 동시 할당할 수 있고, 두 변수의 값을 교환하는 a, b = b, a 같은 영리한 표현도 가능합니다.
함수가 여러 값을 반환할 때도 튜플이 자연스러운 선택입니다.
비유하자면 리스트는 「쇼핑 카트」(자유롭게 넣고 빼기), 튜플은 「선물 상자」(한 번 포장하면 바꾸지 않음)와 같습니다.
둘 다 유용하지만 의도가 다릅니다.
성능 면에서도 튜플이 약간 빠르고 메모리를 적게 씁니다.
또 튜플은 딕셔너리의 키로 쓸 수 있지만(불변이므로) 리스트는 쓸 수 없는 차이도 있습니다.
데이터를 만든 뒤 바꿀 일이 없다면 튜플을 쓰는 게 안전·효율 양쪽에서 유리합니다.
한 줄 요약
튜플은 ( ) 안에 쉼표로 만드는 「불변 리스트」입니다.
좌표·날짜처럼 의미 있는 묶음, 함수의 다중 반환, 딕셔너리 키로 자주 쓰이며 리스트보다 빠르고 안전합니다.
더 알아볼 것
- 네임드 튜플(NamedTuple) — 이름 붙은 튜플
- 튜플 언패킹의 다양한 활용
- 불변성(immutability)의 가치