본문으로 건너뛰기

UZU Dev LogoUZU Dev LogoUZU-DEV

[Python] 자료 구조 : 튜플

튜플의 불변성, 인덱싱 · 슬라이싱, 제한적 메서드와 언패킹 활용법을 정리한 글

2025년 9월 10일

[Python] 자료 구조 : 튜플 썸네일

1. 튜플(Tuple)이란?

튜플은 리스트와 비슷하지만 수정이 불가능(Immutable) 한 자료 구조다. 소괄호(())로 만든다.

fruits = ("apple", "banana", "cherry")
nums = (1, 2, 3, 4, 5)
mixed = (1, "python", True, 3.14)
  • 순서 유지 : 인덱스를 통해 값 접근 가능
  • 중복 허용 : 같은 값 여러 번 저장 가능
  • 불변성(Immutable) : 생성 후 값 변경 불가
  • 코드 안전성 확보 및 데이터 보호에 유용

2. 인덱싱과 슬라이싱

2.1 인덱싱
fruits = ("apple", "banana", "cherry")

print(fruits[0])   # apple
print(fruits[-1])  # cherry
  • 리스트와 동일하게 0부터 시작하는 인덱스 사용
  • 음수 인덱스로 뒤에서 접근 가능
2.2 슬라이싱
nums = (10, 20, 30, 40, 50)

print(nums[1:4])   # (20, 30, 40)
print(nums[:3])    # (10, 20, 30)
print(nums[2:])    # (30, 40, 50)
  • [시작:끝] 범위 지정 가능
  • 결과 역시 튜플 형태로 반환됨

3. 튜플의 특징

튜플은 리스트와 달리 값을 수정할 수 없다.

t = (1, 2, 3)
# t[0] = 100  → 오류 발생 (TypeError)
  • 삽입 · 삭제 · 수정 불가
  • 다만, 튜플 안에 리스트가 포함된 경우 그 리스트는 수정 가능
nested = (1, [2, 3], 4)
nested[1][0] = 99
print(nested)  # (1, [99, 3], 4)

4. 튜플 메서드

튜플은 불변 구조이므로 메서드가 제한적이다.

nums = (1, 2, 2, 3, 4)

print(nums.count(2))   # 2
print(nums.index(3))   # 3
  • count(x) : 값 x의 개수 반환
  • index(x) : 값 x의 위치(인덱스) 반환

5. 활용 예시

  • 고정된 데이터 집합을 저장할 때 (예: 요일, 좌표)
  • 함수 반환값으로 여러 값을 동시에 전달할 때
# 좌표 반환 예시
def get_position():
    return (100, 200)

x, y = get_position()
print(x, y)  # 100 200
  • 언패킹(Unpacking) : 튜플 안의 값을 변수에 한 번에 할당 가능
person = ("Yuju", 22, "AI Student")

name, age, major = person
print(name)   # Yuju
print(age)    # 22
print(major)  # AI Student

[Python] 자료 구조 : 튜플