Remarks
이 글은 전문가를 위한 파이썬(Fluent Python)을 정리한 자료입니다.
2.3 튜플은 단순한 불변 리스트가 아니다
- 튜플은 불변 리스트로 사용하거나, 필드명이 없는 레코드로 사용될 수도 있다.
레코드(record)
각기 다른 자료형에 속할 수 있는 필드(field, member, attribute)의 모임
Key를 통해 필드를 검색할 수 있다
2.3.1 레코드로서의 튜플
- 튜플은 레코드를 담고 있다.
튜플의 각 항목은 레코드의 필드 하나를 의미하며 항목의 위치가 의미를 결정한다.
traveler_ids = [('USA', '1'),
('BRA', '2'),
('ESP', '3')]
for passport in sorted(traveler_ids):
print("%s / %s" % passport)
2.3.2 Tuple unpacking (iterable unpacking)
import os
dirname, filename = os.path.split('/home/ydj/.ssh/idrsa.pub')
a, b, *rest = range(5) # 0, 1, [2, 3, 4]
a, b, *rest = range(2) # 0, 1, []
a, *rest, c = range(5) # 0, [1, 2, 3], 4
assert isinstance(rest, list)
2.3.4 Namedtuple
Field의 이름을 붙일 필요가 있을 때 namedtuple()
을 사용할 수 있다.
namedtuple()
은 필드명과 클래스명을 추가한 튜플의 서브클래스를 생성하는 팩토리 함수이다.
from collections import namedtuple
fields = ('name', 'country') # "name country" 도 가능
City = namedtuple('City', fields)
tokyo = City('Tokyo', 'JP')
tokyo.namedtuple # 'Tokyo'
tokyo.country # 'JP'
assert tokyo[1] == tokyo.country
assert tokyo._fields == fields
ordered_dict = tokyo._asdict()
PREVIOUSEtc