파이썬 에서 튜플은 단순히 ‘불변 리스트’로 설명 되기도 한다. 하지만, 튜플은 불변 리스트로서 만이 아닌 필드명이 없는 레코드로 사용할 수도 있다.
튜플은 레코드를 담고 있다. 튜플의 각 항목은 레코드의 필드하나를 의미하며 항목의 위치가 의미를 결정한다. 그러므로 정렬을 하게 되면 정보가 파괴된다는 점에 주의해야 한다.
또한 튜플은 언패킹 매커니즘을 이용해 임시 변수없이 두 변수의 값을 서로 교환할 수 있다.
b, a = a, b
대표적인 튜플 언패킹의 예
반복을 위해 사용하기도 하지만, 병렬할당시에도 사용하게 된다.
a, b, *rest = range(5)
a, b, rest
(0, 1, [2, 3, 4])
#단 병렬 할당시 단 하나의 변수에만 적용할 수 있다.
*head, b, c, d = range(5)
([0, 1], 2, 3, 4)
또한 구조체의 표현식이 (1,2(3,4)) 와 같이 일치한다면, 제대로 처리한다.
튜플을 공부하면서 가장 매력적으로 다가온 명명된 튜플 혹은 네임드 튜플은 기본자료형은 아니다. collections에 namedtuple 함수를 이용해서 만들 수 있다. 또한 namedtuple이 반환하는 값은 클래스다.
네임드 튜플을 생성할때는 변수명과 클래스명을 통일 시키는 것이 좋습니다. 이름을 통일하지 않으면 생성시 혼동될 수 있기 때문입니다.
biz_card = namedtuple('biz_card','name age phonenumber')
john_card = biz_card('john','30','010-123-1234')
john_card._asdict() 메소드를 쓰면 딕셔너리로 변환할 수 있다.
john_info = {'name':'john','age':30,'phonenumber':'010-123-1234'}
john_card = biz_card(**john_info)
또한 딕셔너리를 넘겨서 생성할 수 있다.
여기까지 튜플을 알아보았다. 다음에는 이어서 시퀀스를 계속 살펴볼 예정이다. 그럼 오늘은 여기까지~