Fluent Python tuple

fluent

전문가를 위한 파이썬 정리하기

파이썬 학습 중 보다 한걸음 나아가기 위해 책을 읽고 공부한 부분을 정리하려고 한다.

오늘의 정리 내용은 2장 데이터 구조체 중 시퀀스 중 튜플을 이어서 한다.

  • 튜플(Tuple)

튜플에 대해 알아본다.

파이썬 에서 튜플은 단순히 ‘불변 리스트’로 설명 되기도 한다. 하지만, 튜플은 불변 리스트로서 만이 아닌 필드명이 없는 레코드로 사용할 수도 있다.

튜플은 레코드를 담고 있다. 튜플의 각 항목은 레코드의 필드하나를 의미하며 항목의 위치가 의미를 결정한다. 그러므로 정렬을 하게 되면 정보가 파괴된다는 점에 주의해야 한다.

또한 튜플은 언패킹 매커니즘을 이용해 임시 변수없이 두 변수의 값을 서로 교환할 수 있다.

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)) 와 같이 일치한다면, 제대로 처리한다.

Named Tuple

튜플을 공부하면서 가장 매력적으로 다가온 명명된 튜플 혹은 네임드 튜플은 기본자료형은 아니다. 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)
또한 딕셔너리를 넘겨서 생성할 수 있다.

여기까지 튜플을 알아보았다. 다음에는 이어서 시퀀스를 계속 살펴볼 예정이다. 그럼 오늘은 여기까지~


Written by@[ulfrid]
기술 블로그 및 공부 정리

GitHub