파이썬
튜플 ( 컬렉션 타입 )
96__혀누
2024. 3. 13. 17:14
튜플 tuple
리스트와 같이, 여러 타입의 데이터들을 저장할 수 있지만, 리스트와 달리, 데이터의 변경이 불가능( immutable )
( ) 안에 데이터들을 입력하여 생성하며, 항목들은 콤마( , )로 구분된다.
⁙ 하나의 데이터만 입력할 경우에도, 콤마( , )를 붙혀야 한다.
tu1 = (1,) # 요소가 1개일 경우, 끝에 콤마( , ) 붙혀야 한다.
print(tu1)
tu2 = (1, 3, 5, 7)
print(tu2)
print(type(tu2))
>>>
(1,)
(1, 3, 5, 7)
<class 'tuple'> # 데이터 타입은 tuple
# 다른 방법으로 튜플 생성하기
tu3 = tuple([1, 3, 5, 7])
print(tu3)
print(type(tu3))
>>>
(1, 3, 5, 7)
<class 'tuple'>
tu4 = 1, 3, 5, 7
print(tu4)
print(type(tu4))
>>>
(1, 3, 5, 7)
<class 'tuple'>
# 문자형 및 리스트, 튜플 타입의 데이터가 튜플에 포함될 수 있다.
tu5 = ('apple', 'banana', ('🍎', '🍓'))
tu6 = ('apple', 'banana', ['🍎', '🍓'])
print(tu5)
print(tu6)
>>>
('apple', 'banana', ('🍎', '🍓'))
('apple', 'banana', ['🍎', '🍓'])
인덱싱과 슬라이싱
인덱싱 및 슬라이싱이 가능하며, 데이터들의 각각의 데이터타입은 유지된다.
# 인덱싱
tu1 = (1, 2, 'apple', 'banana')
print(tu1[0])
print(tu1[-1])
>>>
1
banana
# 슬라이싱
tu1 = (1, 2, 'apple', 'banana')
print(tu1[1:])
print(tu1[1:3])
>>>
(2, 'apple', 'banana')
(2, 'apple')
---------------------------------------------------------
tu5 = ('apple', 'banana', ('🍎', '🍓'))
print(tu5)
print(tu5[0])
print(tu5[2][0])
print(type(tu5))
print(type(tu5[2]))
print(type(tu5[2][0]))
>>>
('apple', 'banana', ('🍎', '🍓'))
apple
🍎
<class 'tuple'>
<class 'tuple'>
<class 'str'>
튜플은 리스트와 달리, 데이터의 변경이 불가능하다.
튜플을 데이터의 추가, 삭제, 변경이 불가능하다.
튜플안의 데이터를 변경하여 할 시, 오류가 발생한다.
tu5 = ('apple', 'banana', ('🍎', '🍓'))
tu5[0] = 'orange'
>>> TypeError: 'tuple' object does not support item assignment
## 튜플 데이터를 변경하고 싶다면, list() 함수를 이용하여, 튜플 타입의 데이터를 리스트 타입으로 변환 후,
원하는 데이터를 변경한 뒤, tuple() 함수를 사용하여, 다시 튜플 타입으로 지정할 수 있다.
## 튜플안의 데이터의 변경은 불가능 하나, 변수의 변경은 가능하다.
tu5 = ('apple', 'banana', ('🍎', '🍓'))
tu5 = 'orange'
print(tu5)
>>> orange
연산
튜플의 연산은 리스트와 동일하다.
tu1 = (10, 20, 30)
tu2 = (40, 50, 60)
print(tu1 + tu2) # 리스트와 동일하게 순서대로 연산
print(tu2 + tu1)
tu1 = tu1 + (40, 50)
print(tu1)
print(tu1 * 3)
>>>
(10, 20, 30, 40, 50, 60)
(40, 50, 60, 10, 20, 30)
(10, 20, 30, 40, 50)
(10, 20, 30, 40, 50, 10, 20, 30, 40, 50, 10, 20, 30, 40, 50)
--------------------------------------------------------------
# 요소끼리의 연산 가능
tu3 = (10, 20, 30)
print(tu3[0] + tu3[2])
>>> 40
언패킹
튜플의 항목들을 각각의 변수에 할당할 수 있다. ( 리스트도 가능 )
apple, banana, orange = ('김사과', '반하나', '오렌지')
print(apple)
print(banana)
print(orange)
# 다른방법
apple, banana, orange = '김사과', '반하나', '오렌지'
print(apple)
print(banana)
print(orange)
>>>
김사과
반하나
오렌지
in 연산자
해당 튜플에 특정 데이터가 있는지 확인할 수 있다.
print(2 in (2, 4, 6, 8, 10))
print(3 in (2, 4, 6, 8, 10))
>>>
True
False
sorted() 함수
튜플에는 sort와 같은 인플레이스 메서드를 사용할 수 없다.
sorted() 함수를 사용하면, 해당 튜플을 리스트 타입으로 반환할 수 있으며,
튜플 타입의 데이터를 리스트 타입으로 변환 후, 데이터를 변경 후, 다시 튜플로 지정할 수 있다.
tu1 = (10, 30, 20, 70)
# sort() 메서드 사용 시, 에러가 발생한다.
tu1.sort() # NameError: name 'tu' is not defined
# sorted 함수를 사용할 수 있으며, 리스트로 반환한다.
tu1 = sorted(tu1)
print(tu1)
tu1 = tuple(tu1) # 다시 튜플로 변경
print(type(tu1))
>>>
[10, 20, 30, 70]
<class 'tuple'>