에듀테크 프로젝트 대시보드
튜플 (tuple)
변경 불가능한 시퀀스. 함수의 다중 반환값, 딕셔너리 키, 고정 레코드에 쓰입니다.
t = (1, 2, 3)
t = 1, 2, 3 # 괄호는 선택 (쉼표가 튜플을 만든다)
single = (42,) # 원소 1개는 반드시 뒤에 쉼표
empty = ()
t = tuple([1, 2, 3])
x = (42) # 이건 그냥 int 42! (튜플 아님)t = (1, 2, 3)
# t[0] = 9 # TypeError
# 단, 내부에 가변 객체가 있으면 그 객체는 변경 가능
t = ([1, 2], 3)
t[0].append(9) # OK => ([1, 2, 9], 3)
# 메서드는 2개뿐
t = (1, 2, 2, 3)
t.count(2) # => 2
t.index(3) # => 3point = (3, 4)
x, y = point # x=3, y=4
a, b = b, a # 스왑
first, *middle, last = [1, 2, 3, 4, 5]
# first=1, middle=[2, 3, 4], last=5
for name, age in [("김", 20), ("이", 22)]:
print(name, age)
_, value = ("ignored", 99) # _ 는 "안 쓰는 값" 관례def minmax(nums):
return min(nums), max(nums) # 튜플로 묶여 반환
lo, hi = minmax([3, 1, 4, 1, 5]) # 언패킹
divmod(17, 5) # => (3, 2)
"a-b".partition("-") # => ('a', '-', 'b')from collections import namedtuple
Point = namedtuple("Point", ["x", "y"])
p = Point(3, 4)
p.x, p.y # => 3 4
p[0] # => 3 (여전히 튜플)
p._replace(x=10) # => Point(x=10, y=4) (새 객체)
# 타입 힌트 버전
from typing import NamedTuple
class Point(NamedTuple):
x: int
y: int = 0