튜플이란 무엇인가?
튜플(tuple)은 괄호 ()로 묶인 순서가 있는 Python 객체들의 컬렉션으로 정의됩니다. 흥미로운 점은 튜플의 항목은 어떤 Python 객체든 될 수 있다는 것입니다. 따라서 튜플 자체도 또 다른 튜플의 항목이 될 수 있으며, 이를 '중첩 튜플(nested tuple)'이라고 부릅니다.
아래 예제처럼 튜플 안에 튜플을 손쉽게 포함시킬 수 있습니다.
>>> t1 = (1, (4, 5, 6), 2, 3)
>>> t1
(1, (4, 5, 6), 2, 3)
중첩된 튜플에 접근하는 방법
위 예제에서 t1의 인덱스 1에 위치한 항목은 그 자체로 하나의 튜플입니다. 일반적인 인덱싱 방식을 사용하면 이 내부 튜플 전체를 다음과 같이 가져올 수 있습니다.
>>> t1[1]
(4, 5, 6)
내부 항목까지 접근하기
나아가 중첩된 튜플 내부의 개별 항목에도 접근할 수 있습니다. 바깥 튜플의 인덱스 뒤에 내부 튜플의 인덱스를 연달아 지정하면 됩니다.
>>> t1[1][1]
5
여기서 t1[1]은 내부 튜플 (4, 5, 6)을 반환하고, 여기에 다시 [1]을 적용해 두 번째 요소인 5를 얻습니다.
정리
튜플은 변경 불가능(immutable)하지만 리스트와 마찬가지로 다양한 객체를 담을 수 있어, 데이터 구조를 계층적으로 구성할 때 매우 유용합니다. 다중 인덱싱(t1[1][1])을 활용하면 중첩된 깊이와 관계없이 원하는 값에 쉽게 접근할 수 있습니다.