Python 튜플은 변경 불가능(Immutable)한 객체입니다
Python에서 튜플(tuple)은 한 번 생성되면 내용을 수정할 수 없는 불변(immutable) 객체입니다. 따라서 리스트처럼 append() 메서드를 사용해 요소를 직접 추가하려고 하면 오류가 발생합니다.
하지만 몇 가지 우회 방법을 사용하면 사실상 튜플에 새로운 요소를 추가한 것과 같은 결과를 얻을 수 있습니다.
방법 1: list()와 tuple() 함수를 활용한 변환
가장 대표적인 방법은 다음과 같습니다.
- 내장 함수
list()를 사용해 튜플을 리스트로 변환합니다. - 리스트 객체에는 언제든지
append()로 새 항목을 추가할 수 있습니다. - 다시 내장 함수
tuple()을 사용해 리스트를 튜플로 되돌립니다.
>>> T1=(10,50,20,9,40,25,60,30,1,56) >>> L1=list(T1) >>> L1 [10, 50, 20, 9, 40, 25, 60, 30, 1, 56] >>> L1.append(100) >>> T1=tuple(L1) >>> T1 (10, 50, 20, 9, 40, 25, 60, 30, 1, 56, 100)
실행 결과를 보면 원래 튜플의 끝에 새로운 요소 100이 추가된 것을 확인할 수 있습니다.
방법 2: 튜플 연결(Concatenation) 활용
리스트로 변환하지 않고 + 연산자를 이용해 기존 튜플과 새 요소를 담은 튜플을 합치는 방법도 있습니다.
>>> T1=(10,50,20,9,40,25,60,30,1,56) >>> T1 = T1 + (100,) >>> T1 (10, 50, 20, 9, 40, 25, 60, 30, 1, 56, 100)
이 경우 주의할 점은 단일 요소를 추가할 때 반드시 쉼표(,)를 붙여 (100,) 형태의 튜플로 만들어야 한다는 것입니다. (100)처럼 쉼표 없이 작성하면 괄호는 단순히 연산 우선순위를 나타내는 기호로 해석되어 정수형으로 처리됩니다.
마무리
튜플 자체는 수정이 불가능하기 때문에 위 방법들은 모두 새로운 튜플 객체를 생성하는 방식입니다. 데이터가 자주 변경된다면 애초에 리스트를 사용하는 것이 더 효율적이며, 읽기 전용 데이터라면 튜플을 유지하는 것이 좋습니다.