Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 튜플은 변경할 수 없다? 값 추가를 위한 실용적인 우회 방법

파이썬에서 튜플(tuple)불변(immutable) 객체입니다. 따라서 append()insert()처럼 튜플을 직접 수정하려는 모든 연산은 허용되지 않으며, 시도할 경우 AttributeError가 발생합니다.

왜 튜플은 수정할 수 없을까?

튜플은 한 번 생성되면 내부 요소를 추가, 삭제, 변경할 수 없습니다. 이러한 불변성 덕분에 튜플은 리스트보다 메모리 효율이 좋고, 딕셔너리의 키로 사용하거나 데이터가 의도치 않게 변경되지 않아야 하는 상황에서 안전하게 활용됩니다.

해결 방법: 리스트로 변환 후 다시 튜플로 변환

튜플에 값을 추가해야 한다면 다음과 같은 우회 방법을 사용할 수 있습니다.

  1. 내장 함수 list()를 사용해 튜플을 리스트로 변환합니다.
  2. 리스트는 가변(mutable) 객체이므로 append()insert()로 자유롭게 항목을 추가할 수 있습니다.
  3. 내장 함수 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)
>>> L1.insert(4,45)
>>> T1=tuple(L1)
>>> T1
(10, 50, 20, 9, 45, 40, 25, 60, 30, 1, 56, 100)

실행 결과 분석

  • L1.append(100): 리스트 맨 뒤에 100이 추가됩니다.
  • L1.insert(4,45): 인덱스 4 위치에 45가 삽입됩니다.
  • 최종적으로 새로운 튜플에는 기존 요소들과 함께 45100이 포함된 것을 확인할 수 있습니다.

주의 사항

이 방법은 원본 튜플을 수정하는 것이 아니라, 새로운 튜플 객체를 생성하는 방식입니다. 즉, 원본 튜플 T1은 그대로 유지되며, 변수에 재할당함으로써 결과적으로 확장된 튜플을 얻게 됩니다. 잦은 수정이 필요한 데이터라면 애초에 리스트를 사용하는 것이 더 효율적입니다.