Python

파이썬 자료구조: 튜플 완전 정리

초코너무조코 2025. 11. 25. 22:33
728x90

리스트에 이어 이번에는 파이썬에서 제공하는 두 번째 기본 자료구조인 튜플(tuple)을 정리한다.
튜플은 리스트와 비슷하게 순서가 있지만, 수정이 불가능하다는 특징을 가진다. 이 점 때문에 튜플은 읽기 전용 데이터나 변경되면 안 되는 값을 다룰 때 자주 사용된다.


1. 튜플이란 무엇인가

튜플(tuple)은 다음과 같은 특징을 가진다.

  • 순서가 있다
  • 인덱싱과 슬라이싱 가능
  • 수정 불가능(immutable)
  • 괄호 ( ) 로 표현
  • 여러 데이터를 하나의 묶음으로 표현하는 데 적합

리스트와 비교하면 다음과 같다.

리스트 vs 튜플 비교

항목 리스트 튜플
기호 [ ] ( )
변경 가능 불가능
인덱싱 가능 가능
슬라이싱 가능 가능
추가/삭제 가능 불가능
순서 있음 있음

 

수정이 필요하면 리스트를 값이 변하지 않으면 튜플을 사용하는 것이 좋다.


2. 튜플 생성

튜플은 괄호 ( ) 안에 데이터를 쉼표로 구분해 나열한다.

시세 = (533, 504, 498, 506, 489)
print(시세)
print(type(시세))

 

(533, 504, 498, 506, 489)
<class 'tuple'>

 

튜플의 원소는 생성된 이후 변경할 수 없다.


3. 튜플 인덱싱과 슬라이싱

튜플은 순서가 있으므로 리스트와 동일한 방식으로 인덱싱과 슬라이싱이 가능하다.

시세 = (533, 504, 498, 506, 489)

print(시세[0])   # 533
print(시세[1])   # 504

 

슬라이싱도 동일하게 사용할 수 있다.

print(시세[0:2])   # (533, 504)

 

튜플을 정의할 때는 괄호 ( )를 사용하지만,
인덱싱과 슬라이싱은 리스트와 동일하게 대괄호 [ ]를 사용한다는 점을 기억해야 한다.


4. 튜플 수정 불가능

튜플은 immutable 구조이기 때문에 원소를 변경하려고 하면 에러가 발생한다.

시세 = (533, 504, 498, 506, 489)
시세[0] = 100

 

TypeError: 'tuple' object does not support item assignment

 

튜플을 사용하는 목적은 수정이 필요하지 않은 데이터를 고정된 형태로 관리하기 위함이다. 덕분에 리스트보다 메모리 사용량이 적고 더 빠르게 처리되는 경우도 많다.


5. 리스트와 튜플의 형변환

실제 개발에서는 리스트와 튜플을 필요에 따라 변환해 사용하는 경우가 많다.

리스트 → 튜플 변환

mylist = [1, 2, 3]
result1 = tuple(mylist)
print(result1)

 

(1, 2, 3)

튜플 → 리스트 변환

mytuple = (1, 2, 3)
result2 = list(mytuple)
print(result2)

 

[1, 2, 3]

 

형변환은 다음 원칙을 기억하면 쉽다.

  • 리스트 객체 생성: list( )
  • 튜플 객체 생성: tuple( )

이처럼 파이썬의 자료형은 자신의 타입 이름을 그대로 함수처럼 사용하여 형변환을 할 수 있다.


6. 정리

튜플은 리스트보다 기능은 적지만 불변성 덕분에

  • 데이터가 변하지 않아야 할 때
  • 메모리를 절약하고 싶을 때
  • 구조화된 데이터를 고정된 형태로 유지하고 싶을 때
    특히 유용한 자료구조다.

리스트와 튜플을 목적에 맞게 선택하면 코드가 보다 명확해지고 안정적인 프로그램을 작성할 수 있다.

 

728x90