여러 가지 데이터 타입의 값을 저장할 수 있는, 변경 불가능(Immutable)한 순서가 있는 컬렉션.
튜플은 소괄호 ()를 사용하여 생성하고, 항목들은 쉼표 ,로 구분.
튜플의 특징
- 수정 불가능 (Immutable) : 요소를 추가, 삭제, 수정하는 것이 불가능하다. 따라서 데이터의 안전성이 보장된다.
- 순서가 있음 (Ordered) : 요소들이 차례대로 번호(인덱스)를 가진다.
- 중복 허용 : 똑같은 값을 여러 개 넣어도 괜찮다.
- 다양한 타입 혼용 가능 : 하나의 튜플 안에 숫자, 문자열, 리스트, 또 다른 튜플을 넣을 수 있다.
튜플의 생성
# 기본적인 튜플 생성
tu1 = (1, 3, 5, 7)
# 소괄호를 생략해도 자동으로 튜플로 인식
tu2 = 1, 3, 5, 7
📌 주의해야 할 점 (요소가 1개일 때)
요소가 한개인 튜플을 만들 때는 꼭 뒤에 쉼표(,)를 붙여야 함. 쉼표가 없다면 파이썬에서는 그냥 일반 괄호로 계산함.
tu1 = (5) # 그냥 int 5
tu2 = (5,) # 요소가 한개인 튜플
패킹과 언패킹
- 패킹 (Packing) : 여러 값을 하나의 튜플로 묶는 것
- 언패킹 (Unpacking) : 튜플 안의 값들을 여러 변수에 나누어 담는 것
# 패킹
num1 = 10
num2 = 20
num3 = 30
tu1 = num1, num2, num3
print(tu1)
(10, 20, 30)
# 언패킹
result1, result2, result3 = tu1
print(result1)
print(result2)
print(result3)
10
20
30
튜플의 인덱싱과 슬라이싱
리스트와 똑같은 방식으로 인덱싱과 슬라이싱을 할 수 있다.
# 인덱싱
tu5 = ('apple', 'banana', ('🍎', '🍌'))
print(tu5)
print(type(tu5))
print(tu5[0])
print(type(tu5[0]))
print(tu5[2][0])
print(type(tu5[2][0]))
print(tu5[2]) # 튜플 내부의 리스트는 요소 변경이 가능함.
print(type(tu5[2]))
tu5[2][0] = '❤'
print(tu5)
# tu5[2] = '🎃' # TypeError: 'tuple' object does not support item assignment
# 튜플의 내부 요소를 직접 바꾸려고 하면 에러가 남
('apple', 'banana', ('🍎', '🍌'))
<class 'tuple'>
apple
<class 'str'>
🍎
<class 'str'>
['🍎', '🍌']
<class 'list'>
('apple', 'banana', ['❤', '🍌'])
# 슬라이싱
tu6 = (1, 2, 'apple', 'banana')
print(tu6[1:]) # 튜플의 슬라이싱은 결과도 튜플로 반환
print(tu6[1:3])
(2, 'apple', 'banana')
(2, 'apple')
튜플의 사용 이유
- 데이터 보호 (안전성) : 프로그램이 작동하는 동안 절대로 바뀌면 안되는 데이터를 보관할 때 사용. 코딩 중 실수로 값이 바뀌는 코드를 짜더라도 에러가 발생해서 사고를 막을 수 있음.
- 더 빠른 속도와 적은 메모리 : 내부적으로 리스트보다 가볍고 가공하기 쉽기 때문에, 값을 바꿀 필요가 없다면 튜플을 쓰는 것이 컴퓨터 자원을 아낄 수 있다. 리스트는 언제든 데이터가 늘어날 수 있어서 미리 여유 메모리 공간을 넉넉하게 잡아두는 반면, 튜플은 고정된 크기만큼 메모리를 차지한다.
- 딕셔너리의 키(Key)로 사용 가능 : 딕셔너리의 키값은 변하지 않는 객체여야 하므로, 리스트는 못쓰지만 튜플은 키값으로 사용 가능.
'Python' 카테고리의 다른 글
| 컬렉션 타입 (딕셔너리) (0) | 2026.05.26 |
|---|---|
| 컬렉션 타입 (세트) (0) | 2026.05.26 |
| 1.1 + 0.1 == 1.2 가 False가 나오는 이유 (1) | 2026.05.25 |
| 컴퓨터가 음수(-)를 표현하는 방법 (1) | 2026.05.25 |
| 리스트의 함수와 메서드 (0) | 2026.05.22 |