1. 튜플이란?
튜플(Tuple)은 파이썬의 내장 자료형 중 하나로, 여러 개의 값을 하나의 변수에 저장할 수 있는 자료구조이다. 리스트(List)와 매우 비슷하지만, 튜플은 한 번 생성하면 수정이 불가능(immutable)하다는 차이점이 있다.
따라서 변경이 불필요한 데이터를 안전하게 다룰 때, 데이터의 무결성을 유지하고자 할 때 주로 사용된다.
2. 튜플과 리스트의 비교
항목 튜플 (Tuple) 리스트 (List)
선언 방식 | (1, 2, 3) 또는 1, 2, 3 | [1, 2, 3] |
변경 가능 여부 | 불가능 (immutable) | 가능 (mutable) |
속도 | 상대적으로 빠름 | 상대적으로 느림 |
사용 목적 | 고정된 데이터 처리 | 데이터 추가, 삭제, 변경 필요할 때 |
3. 튜플 생성 방법
3-1. 괄호 사용
t1 = (1, 2, 3)
3-2. 괄호 생략 (쉼표만으로도 생성 가능)
t2 = 4, 5, 6
3-3. 한 개의 원소만 포함할 경우 쉼표 필요
t3 = (1,) # 튜플
t4 = (1) # 정수형, 튜플 아님
4. 튜플 인덱싱 및 슬라이싱
튜플은 순서가 있는 자료형이므로 인덱스를 통해 접근하거나, 슬라이싱이 가능하다.
t = (10, 20, 30, 40)
print(t[0]) # 10
print(t[-1]) # 40
print(t[1:3]) # (20, 30)
5. 튜플의 불변성
튜플은 생성 이후 값을 변경할 수 없다. 다음 코드는 오류를 발생시킨다.
t = (1, 2, 3)
t[0] = 10 # TypeError: 'tuple' object does not support item assignment
6. 튜플의 활용 예시
6-1. 여러 값 반환
def get_coordinates():
return (10, 20)
x, y = get_coordinates()
print(x) # 10
print(y) # 20
6-2. 반복문에서의 언패킹
points = [(1, 2), (3, 4), (5, 6)]
for x, y in points:
print(f"x: {x}, y: {y}")
7. 튜플은 큐(queue)에서도 사용된다
collections.deque와 같은 큐에 튜플을 저장하면 데이터와 그에 대한 추가 정보(예: 현재 깊이, 상태 등)를 함께 관리할 수 있다. 이는 BFS(너비 우선 탐색)나 트리 탐색 등에서 매우 유용하게 사용된다.
예시: (노드, 깊이) 형태로 큐에 삽입
from collections import deque
q = deque()
q.append((root, 1)) # 루트 노드와 깊이 1을 함께 저장
while q:
node, depth = q.popleft()
print(f"현재 노드 값: {node.value}, 깊이: {depth}")
if node.left:
q.append((node.left, depth + 1))
if node.right:
q.append((node.right, depth + 1))
위와 같은 방식으로 큐에 튜플을 직접 삽입하고, 언패킹하여 사용하면 상태 관리가 간단해지고 코드가 명확해진다.
8. 결론
튜플은 불변이라는 특성 덕분에 코드의 안정성과 속도를 높이는 데 유리하다. 리스트와 유사하지만 용도에 따라 적절히 선택해야 하며, 변경이 필요 없는 데이터를 다룰 때는 튜플을 사용하는 것이 바람직하다. 또한, 큐와 같은 자료구조에서도 튜플을 사용하면 복합 데이터를 효과적으로 다룰 수 있다.
'자료구조(알고리즘) > 파이썬 문법' 카테고리의 다른 글
파이썬 기본문법 - dictionary(in) 2 (0) | 2025.05.28 |
---|---|
파이썬 기본문법 - dictionary(in) (0) | 2025.05.27 |
파이썬 기본문법 - enumerate()와 stack[-1][1] (0) | 2025.05.27 |