Python 강좌 / 튜플과 시퀀스 언패킹 이해하기
튜플은 항목 순서가 유지되고 항목 연결을 바꿀 수 없는 시퀀스입니다. 함수의 여러 반환값이나 한 묶음의 값을 언패킹할 때 편리하지만, 내부의 변경 가능한 객체까지 불변이 되는 것은 아닙니다.
튜플 생성과 불변성의 범위
튜플은 쉼표가 핵심이며 괄호는 묶음을 명확히 합니다. 항목 하나짜리 튜플은 (3500,)처럼 쉼표가 필요합니다. (3500)은 정수의 괄호 표현입니다. 리스트를 담은 튜플에서는 그 리스트의 항목을 바꿀 수 있으므로 모든 내부 값이 고정된다고 이해하면 안 됩니다.
관련 동작과 지원 조건은 튜플과 시퀀스 언패킹 이해하기 관련 공식 문서에서 확인할 수 있습니다.
single = (3500,)
record = ("lunch", 8000)
print(type(single).__name__)
print(record[0])
전체 예제와 실행 결과
별도의 실습 폴더에서 아래 파일을 UTF-8로 저장합니다. 가상환경을 선택한 터미널에서 python tuples.py 명령으로 실행합니다. macOS·Ubuntu에서 가상환경을 사용하지 않는 경우 명령 이름을 python3으로 바꿉니다.
tuples.py 파일의 전체 내용입니다.
record = ("lunch", 8000, "food")
name, amount, category = record
print(name, amount, category)
first, *rest = [3500, 8000, 2500]
print(first, rest)
a, b = 1, 2
a, b = b, a
print(a, b)
예상 결과는 다음과 같습니다.
lunch 8000 food 3500 [8000, 2500] 2 1
언패킹의 항목 수와 별표
이름 세 개에 튜플을 대입하면 항목도 세 개여야 합니다. 항목 수가 다르면 ValueError가 발생합니다. 별표가 붙은 이름은 남은 항목을 리스트로 받으며, 한 언패킹 패턴에서 별표 대상은 하나만 둘 수 있습니다.
딕셔너리를 바로 언패킹하면 키를 순서대로 받습니다. 키와 값의 쌍을 원하면 items()를 사용해야 합니다. 파일이나 네트워크에서 받은 데이터는 항목 수가 일정하다는 전제를 확인한 뒤 언패킹하세요.
리스트·튜플·이름 있는 구조 선택하기
| 목적 | 선택 기준 |
|---|---|
| 항목이 계속 추가되는 금액 목록 | 리스트 |
| 이름과 금액처럼 정해진 위치의 짧은 묶음 | 튜플 |
| 필드가 많고 이름으로 접근해야 하는 기록 | 딕셔너리나 dataclass |
튜플을 딕셔너리 키로 쓰려면 모든 항목도 해시 가능해야 합니다. 리스트를 포함한 튜플은 키로 사용할 수 없습니다. 예제의 category를 제거해 언패킹 실패를 확인하고, 이름 개수도 두 개로 맞추면 다시 실행되는지 비교해 보세요.










