튜플(tuple)은 여러 가지 데이터 타입의 값을 저장할 수 있는 컬렉션이다.
이는 리스트(list)와 유사하긴 하지만 가장 큰 다른 특징이 변경 불가능(immutable)하다는 점이다.
또한 튜플은 순서가 있는 컬렉션이기 때문에 인덱스를 통해 요소에 접근할 수 있다.
튜플은 괄호 ()를 사용하여 생성하고, 항목들은 쉼표 ,로 구분한다.
1. 튜플 만들기

위 코드는 빈 튜플을 만든 예시이다.
다만 튜플은 한 번 만들면 수정할 수 없기 때문에,
실제로 빈 튜플을 만들어 사용하는 경우는 많지 않을 것 같다.
튜플을 만들 때 헷갈릴 수 있는 부분은 요소가 하나일 때이다.

이렇게 tu2 = (1)이라고 작성하면 튜플이 아니라 정수 1로 인식된다.
이때의 괄호는 튜플을 의미하는 괄호가 아니라, 그냥 연산 우선순위를 나타내는 괄호처럼 처리되기 때문이다.
그래서 요소가 하나인 튜플을 만들고 싶다면 반드시 뒤에 쉼표 ,를 붙여야 한다.

2. 패킹(packing) 과 언패킹 (unpacking)
튜플은 여러 개의 값을 하나로 묶을 수 있다.
이렇게 여러 값을 하나의 튜플로 묶는 것을 패킹(packing)이라고 한다.

반대로 튜플에 들어있는 값을 각각의 변수에 나누어 담는 것을 언패킹(unpacking)이라고 한다.

3. 튜플 안의 리스트 수정
튜플은 변경 불가능한 자료형이다.
그래서 튜플 안의 요소를 직접 바꾸려고 하면 에러가 발생한다.
하지만, 튜플 안에 리스트가 들어있는 경우에는 조금 다르게 볼 필요성이 있다.
tu5 = ('apple', 'banana', ['🍎', '🍌'])
print(tu5) # ('apple', 'banana', ['🍎', '🍌'])
print(type(tu5)) # tuple
print(tu5[2]) # ['🍎', '🍌']
print(type(tu5[2])) # list
실행결과
('apple', 'banana', ['🍎', '🍌'])
<class 'tuple'>
['🍎', '🍌']
<class 'list'>
👉 tu5 자체는 튜플이지만, tu5[2]에 들어있는 값은 리스트이다.
그래서 아래처럼 리스트 내부의 요소는 수정할 수 있다.
그러나 주석처리한 파트처럼 요소 자체를 다른 값으로 바꾸려고 하면 에러가 발생한다.
tu5[2][0] = '❤' # tu5[2][0]
print(tu5)
# tu5[2]= '🎃' # TypeError: 'tuple' object does not support item assignment
실행결과
('apple', 'banana', ['❤', '🍌'])
4. 튜플의 정렬
튜플은 변경 불가능한 컬렉션이기 때문에 sort() 메서드를 제공하지 않는다.
리스트는 sort()를 사용해서 자기 자신을 직접 정렬할 수 있지만,
튜플은 자기 자신을 바꿀 수 없기 때문이다.
그래서 튜플을 정렬하고 싶을 때는 sorted() 함수를 사용한다.
tu9 = (10, 30, 100, 90, 50)
# tu9.sort() # 튜플은 sort 메서드가 존재하지 않음
result = sorted(tu9, reverse=True) # 내림차순하여 리스트로 반환
print(result) # [100,90,50,30,10]
print(tu9) # 변경되지 않았음 (10, 30, 100, 90, 50)
result = tuple(result) # (100,90,50,30,10)
print(result) # (100,90,50,30,10)
실행 결과
[100, 90, 50, 30, 10]
(10, 30, 100, 90, 50)
(100, 90, 50, 30, 10)'python' 카테고리의 다른 글
| 9. 사용자 정의 함수 ① (0) | 2026.05.27 |
|---|---|
| Python - 제어문-반복문 (0) | 2026.05.27 |
| Python - 컬렉션 타입 – 세트(set) , 딕셔너리 (dict) (0) | 2026.05.26 |
| Python 제어문 – 조건문 (0) | 2026.05.26 |
| BootCamp Day03 1.1 + 0.1 == 1.2 가 False가 나오는 이유 (0) | 2026.05.24 |