튜플은 파이썬의 내장 자료형 중 하나로, 여러 값을 하나의 변수에 저장할 수 있는 자료형이다. 튜플은 리스트와 비슷하지만, 중요한 차이점은 변경 불가능(immutable) 하다는 것이다. 즉, 한 번 생성된 튜플의 요소는 변경, 추가, 삭제가 불가능하다. 튜플은 소괄호 ()로 감싸서 정의하며, 각 요소는 쉼표로 구분된다.
1. 튜플 정의 및 기본 사용법
튜플 정의
# 빈 튜플
empty_tuple = ()
# 요소가 있는 튜플
fruits = ("apple", "banana", "cherry")
numbers = (1, 2, 3, 4, 5)
mixed_tuple = (1, "apple", 3.14, True)
# 튜플을 정의할 때 소괄호를 생략할 수 있다.
another_tuple = 1, 2, 3
print(fruits) # 출력: ('apple', 'banana', 'cherry')
print(numbers) # 출력: (1, 2, 3, 4, 5)
print(mixed_tuple) # 출력: (1, 'apple', 3.14, True)
print(another_tuple) # 출력: (1, 2, 3)
2. 튜플 인덱싱 및 슬라이싱
인덱싱
튜플의 각 요소는 인덱스를 통해 접근할 수 있다. 인덱스는 0부터 시작한다.
print(fruits[0]) # 출력: apple
print(fruits[1]) # 출력: banana
print(fruits[2]) # 출력: cherry
# 음수 인덱스를 사용하여 튜플의 끝에서부터 접근
print(fruits[-1]) # 출력: cherry
print(fruits[-2]) # 출력: banana
print(fruits[-3]) # 출력: apple
슬라이싱
튜플의 일부를 잘라내어 새로운 튜플을 생성할 수 있다. 슬라이싱은 [start:end] 형식으로 작성하며, start는 포함되고 end는 포함되지 않는다.
print(fruits[0:2]) # 출력: ('apple', 'banana')
print(fruits[1:]) # 출력: ('banana', 'cherry')
print(fruits[:2]) # 출력: ('apple', 'banana')
print(fruits[:]) # 출력: ('apple', 'banana', 'cherry')
3. 튜플의 불변성 (Immutability)
튜플은 한 번 생성되면 변경할 수 없다. 요소의 추가, 수정, 삭제가 불가능하다.
# fruits[0] = "blueberry" # 오류 발생: 'tuple' object does not support item assignment
4. 여러 변수에 값 할당 (Unpacking)
튜플을 사용하여 여러 변수에 값을 한 번에 할당할 수 있다.
fruits = ("apple", "banana", "cherry")
a, b, c = fruits
print(a) # 출력: apple
print(b) # 출력: banana
print(c) # 출력: cherry
튜플을 사용하여 두 변수의 값을 쉽게 교환하는 것도 가능하다.
x = 1
y = 2
x, y = y, x
print(x) # 출력: 2
print(y) # 출력: 1
함수에서 여러 값을 반환할 때 튜플을 사용할 수 있다.
def get_min_max(numbers):
return min(numbers), max(numbers)
min_val, max_val = get_min_max([1, 2, 3, 4, 5])
print(min_val) # 출력: 1
print(max_val) # 출력: 5
5. 튜플 메서드
튜플은 변경 불가능한 자료형이므로 리스트에 비해 메서드가 적다. 주로 사용할 수 있는 메서드는 count()와 index()이다.
count(): 튜플에서 특정 값의 개수를 반환한다.
index(): 튜플에서 특정 값의 첫 번째 위치를 반환한다.
numbers = (1, 2, 3, 2, 4, 2, 5)
print(numbers.count(2)) # 출력: 3
print(numbers.index(2)) # 출력: 1
6. 튜플과 리스트 변환
튜플과 리스트는 서로 변환할 수 있다.
fruits_tuple = ("apple", "banana", "cherry")
fruits_list = list(fruits_tuple)
print(fruits_list) # 출력: ['apple', 'banana', 'cherry']
fruits_list = ["apple", "banana", "cherry"]
fruits_tuple = tuple(fruits_list)
print(fruits_tuple) # 출력: ('apple', 'banana', 'cherry')
7. 튜플의 장점
변경 불가능: 데이터의 불변성을 보장하며, 실수로 데이터를 변경하는 것을 방지한다.
메모리 사용량: 리스트보다 메모리를 적게 사용한다.
빠른 접근 속도: 인덱싱을 통한 요소 접근이 리스트보다 빠르다.