Python

8. 튜플(Tuple)

HJ76 2023. 3. 7. 17:13

1. 튜플(Tuple)

  • 리스트와 비슷하지만 리스트는 대괄호로 자료를 감싸고, 튜플은 소괄호로 감쌈
  • 요소의 수정, 삭제 불가능
tu1 = ()
print(tu1)

# 요소의 수정이 불가능함으로 에러 발생
tu1[0] = 100 #TypeError: 'tuple' object does not support item assignment
tu2 = (1, 3, 5, 7)
print(tu2) # (1, 3, 5, 7)
print(type(tu2)) # <class 'tuple'>

# 튜플안에 리스트도 저장 가능
tu5 = ('apple', 'banana', ['🍓', '🍉'])
print(tu5) # ('apple', 'banana', ['🍓', '🍉'])
print(type(tu5)) # <class 'tuple'>

2. 튜플의 수정 및 삭제

tu6 = (1,2,'apple','banana')

print(tu6) # (1, 2, 'apple', 'banana')
print(tu6[2]) #print(tu6[2])

# 튜플은 요소의 수정이 불가능
tu6[2] = 'orange' #TypeError: 'tuple' object does not support item assignment
# 튜플은 요소의 삭제가 불가능
del tu6[2] #TypeError: 'tuple' object doesn't support item deletion
# 튜플 삭제하기
del tu6
tu7 = ('apple', 'banana', ['🍓', '🍉'])
tu7[2][1] = '🍌' # 리스트의 요소이므로 변경이 가능
print(tu7) # ('apple', 'banana', ['🍓', '🍌'])

tu7[2] = '🍔' #TypeError: 'tuple' object does not support item assignment
tu8 = ('apple', 'banana', ['🍓', '🍉'])
print(tu8) # ('apple', 'banana', ['🍓', '🍉'])
tu8 = '🍗' # 요소를 변경하는 것이 아니기 때문에 가능하다
print(tu8) # 🍗

3. 튜플의 인덱싱과 슬라이싱 연산

tu9 = (1, 2, 'apple', 'banana')

# 인덱싱
print(tu9[0]) # 1
print(tu9[-1]) # banana

# 슬라이싱
print(tu9[1:]) # (2, 'apple', 'banana')
print(tu9[1:3]) # (2, 'apple')

# 덧셈(연결)
tu10 = (30, 40)
print(tu9 + tu10) # (1, 2, 'apple', 'banana', 30, 40)

tu11 = tu9 + tu10

# 곱셈(반복)
print(tu9 * 3) # (1, 2, 'apple', 'banana', 1, 2, 'apple', 'banana', 1, 2, 'apple', 'banana')

# 요소의 갯수
print(len(tu9)) # 4

4. 튜플의 정렬

tu11 = (1, 3, 2, 0) 

# 요소를 수정하는것이므로 사용 불가능
tu11.sort() # AttributeError: 'tuple' object has no attribute 'sort'

tu12 = sorted(tu11) # sorted 함수를 사용하여 저장
# sorted()는 inplace가 아니라 return이라 튜플도 정렬 가능, 결과를 리스트로 반환함
print(tu12) # [0, 1, 2, 3]