리스트와 튜플, 파이썬의 대표적인 시퀀스 자료형
리스트(List)와 튜플(Tuple)은 파이썬에서 가장 널리 사용되는 시퀀스(Sequence) 자료형입니다. 두 자료형 모두 쉼표로 구분된 여러 항목(item)의 모음을 하나의 객체로 저장하며, 각 항목이 반드시 같은 자료형일 필요는 없습니다. 즉, 숫자와 문자열처럼 서로 다른 타입의 데이터를 하나의 객체에 함께 담을 수 있습니다.
핵심 차이점: 가변성(Mutability)
리스트와 튜플의 가장 중요한 차이는 객체를 생성한 후에 수정할 수 있는지 여부, 즉 가변성입니다.
리스트(List): 가변(Mutable)
리스트는 가변(mutable) 객체입니다. 따라서 한 번 생성된 이후에도 요소를 자유롭게 추가하거나, 기존 값을 수정하거나, 삭제할 수 있습니다.
my_list = [1, 2, 3]
my_list.append(4) # 요소 추가 → [1, 2, 3, 4]
my_list[0] = 10 # 요소 수정 → [10, 2, 3, 4]
del my_list[1] # 요소 삭제 → [10, 3, 4]
튜플(Tuple): 불변(Immutable)
반면 튜플은 불변(immutable) 객체입니다. 메모리에 한 번 생성되면 그 내용을 변경할 수 없기 때문에, 요소를 추가·수정·삭제하는 연산은 모두 허용되지 않으며 시도할 경우 오류(TypeError)가 발생합니다.
my_tuple = (1, 2, 3)
my_tuple[0] = 10 # TypeError 발생!
그렇다면 언제 무엇을 사용해야 할까?
두 자료형의 특성을 이해하면 상황에 맞는 선택이 쉬워집니다.
- 튜플이 적합한 경우: 좌표, 설정값, 요일 이름처럼 값이 절대 변하지 않아야 하는 고정된 데이터를 다룰 때
- 리스트가 적합한 경우: 장바구니 목록, 작업 대기열처럼 실행 중에 내용이 계속 바뀌어야 하는 데이터를 다룰 때
또한 튜플은 불변이라는 특성 덕분에 딕셔너리의 키(key)나 집합(set)의 요소로 사용할 수 있으며, 일반적으로 리스트보다 약간 더 빠르고 메모리 효율적이라는 장점도 있습니다.