본문 바로가기

프로그래밍 언어/파이썬

Python Tuple, 불변 데이터 구조

Python Tuple, 불변 데이터 구조

Python의 튜플(Tuple)은 흔히 리스트와 혼동되지만, 불변(immutable)이라는 결정적인 특징을 지닙니다. 이 특성 덕분에 튜플은 데이터 보호, 메모리 효율, 딕셔너리 키 또는 세트의 요소 등 특정 상황에서 독보적인 역할을 수행합니다. 본 글에서는 튜플의 구조적 이해부터 활용, 고급 기능까지 실전 예제와 함께 체계적으로 설명합니다.

 

 

목차

  1. 튜플이란 무엇인가?
  2. 튜플과 리스트의 차이점
  3. 튜플 생성 방법
  4. 튜플 접근 및 슬라이싱
  5. 튜플의 실전 활용 예제
  6. Packing과 Unpacking 이해하기
  7. 튜플 사용 시 모범 사례

 

1. 튜플이란 무엇인가?

튜플은 순서가 있고 변경 불가능한 데이터의 집합입니다. Python에서 튜플은 소괄호(())로 정의하며, 다음과 같은 특징을 가집니다:

  • 다양한 타입의 값 저장 가능
  • 변경 불가능 (불변)
  • 해시 가능하여 딕셔너리 키로 사용 가능
example = (1, "apple", 3.14)

 

 

 

2. 튜플과 리스트의 차이점

특징 리스트 (list) 튜플 (tuple)
가변성 가변 불변
표기 [] ()
속도 느림 빠름
메모리 사용 높음 낮음
딕셔너리 키 사용 불가능 가능

 

 

 

3. 튜플 생성 방법

튜플은 다양한 방식으로 생성할 수 있으며, 쉼표가 핵심입니다.

  • 일반 생성: (1, 2, 3)
  • 소괄호 생략 가능: 1, 2, 3
  • 단일 요소 튜플: (5,) ※ 쉼표 필수!
  • 함수 사용: tuple([1, 2, 3])
t1 = (10,)
t2 = tuple("abc")  # ('a', 'b', 'c')

 

 

 

4. 튜플 접근 및 슬라이싱

튜플은 인덱스를 통해 요소에 접근하며, 리스트와 동일한 슬라이싱 문법을 따릅니다.

  • 인덱스 접근: t[0]
  • 슬라이싱: t[1:3]
  • 길이 확인: len(t)
t = (10, 20, 30, 40)
print(t[1])     # 20
print(t[-1])    # 40
print(t[1:3])   # (20, 30)

 

 

 

 

5. 튜플의 실전 활용 예제

  • 딕셔너리의 키로 사용
  • 좌표, RGB 등 고정된 구조 표현
  • 다중 반환값 처리
def get_status():
    return (200, "OK")

code, message = get_status()

 

 

 

6. Packing과 Unpacking 이해하기

Python의 튜플은 자동적으로 PackingUnpacking을 지원합니다.

  • Packing: 여러 값을 하나로 묶음
  • Unpacking: 튜플을 개별 변수로 분해
t = 1, 2, 3
a, b, c = t

*args와의 결합을 통해 함수 인자 가변 처리도 가능합니다.

 

 

 

7. 튜플 사용 시 모범 사례

  • 변경되지 않아야 할 값은 리스트 대신 튜플 사용
  • 코드 가독성과 의미 전달을 위해 이름 있는 튜플 활용 (collections.namedtuple)
  • 튜플 안에 리스트를 포함할 경우, 변경 가능성에 주의
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x)  # 1