hustle_D
2025. 7. 8. 17:33
반응형
파이썬에서 튜플(Tuple)은 여러 개의 값을 하나로 묶어서 저장하는 자료형으로 리스트와 비슷하나 생성 후 값의 변경(수정, 추가, 제거)를 할 수 없다는 점이 다르다.
한마디로 불변(immutable)한 자료형이다.
튜플의 생성과 사용
튜플은 ()소괄호를 사용해서 만든다.
t1 = (1, 2, 3)
t2 = ('a', 'b', 'c')
이렇게 생성된 튜플은 리스트처럼 여러 타입의 값을 한번에 저장할 수 있다.
t3 = (1, 'a', 3.14, True)
또한 튜플을 생성할때 하나의 요소만 가지는 경우는 아래와 같이 정수의 형태로 인식한다
t = (1)
print(type(t)) # <class 'int'>
그렇기에 요소하나만 가지는 경우엔 뒤에 쉼표를 넣어줘야만 튜플로써 인식한다
t = (1,)
print(type(t)) # <class 'tuple'>
튜플은 인덱싱, 슬라이싱 등의 활용은 리스트와 동일하다.
t = (1, 2, 3)
print(t[0]) # 1
print(t[0:3]) # (1, 2, 3)
다만 튜플은 생성된 순간부터 요소들의 변경이 불가능하다.
t = (1, 2, 3)
t[0] = 3;
#Traceback (most recent call last):
# File "D:\pythonPrac\pythonProject1\test.py", line 2, in <module>
# t[0] = 3;
# ~^^^
#TypeError: 'tuple' object does not support item assignment
이래서 뭐 써먹겠나 싶지만 이 튜플은 성격에 맞게 여러개의 값을 한번에 리턴하거나 값이 고정되어야 하는 집합(좌표, RGB값 등) 혹은 딕셔너리의 키로 사용된다.
주요 사용 예
1. 언패킹(여러 변수에 한 번에 할당)
튜플에 담긴 값을 한 번에 여러 변수에 할당하는 방식이다
a, b, c = (1, 2, 3)
print(a, b, c) # 1 2 3
2. 함수 리턴값 여러 개 받을 때
파이썬에서는 함수에서 값을 여러 개 return할 수있는데 이때 내부적으로 튜플 형태로 반환된다.
def get_point():
return 3, 5 # (3, 5)와 같다
# 이렇게 여러 변수에 한 번에 값을 받을 수 있다.
x, y = get_point() #x=3, y=5로 자동으로 나눠서 할당(언패킹)
print(x) # 3
print(y) # 5
3. 딕셔너리의 키로 활용
리스트의 경우는 값을 바꿀 수 있기 때문에 키로 사용할 수 없으나 튜플의 경우는 바꿀수 없기에 키로 사용된다.
d = {}
d[(1, 2)] = '좌표' # key값으로 (1, 2)라는 튜플을 사용
print(d[(1,2)]) # '좌표'
# 실제 좌표별 데이터를 저장하고 싶을 때
# (행, 열) : 값
matrix = {}
matrix[(0, 0)] = 1
matrix[(0, 1)] = 2
matrix[(1, 0)] = 3
print(matrix[(1, 0)]) # 3
만약 리스트를 키로 사용하려고 한다면 에러가 발생한다.
이 튜플은 불변하기에 데이터의 안정성을 보장하고 해시값(딕셔너리, set의 키 등)으로 사용 가능하고 메모리/속도 효율성이 더 높다는 장점이 있다
반응형