
파이썬 자료구조 Chapter 02 튜플
2021, May 15
PART 자료구조 Contents
2.3 튜플
튜플tuple : 쉼표(,)로 구분된 값으로 이루어지는 불변 시퀀스 타입
중첩 가능. 값과 쉼표를 사용해 생성(괄호안에 쉼표 없이 값만 넣으면 튜플이 생성되지 않음)
>>> empty = ()
>>> t1 = '안녕', # 또는 ('안녕',)
>>> len(empty)
0
>>> len(t1)
1
>>> t1
('안녕',)
>>> t2 = ('안녕',)
>>> t2
>>> '안녕'
2.3.1 튜플 메서드
A.count(x)
: 튜플 A 에 담긴 항목 X의 개수 반환
>>> t = 1,5,7,8,9,4,1,4
>>> t.count(4)
2
index(x)
: 항목 x의 엔덱스를 반환
>>> t1 = 1,5,7
>>> t.index(5)
1
2.3.2 튜플 언패킹
파이썬에서 모든 반복가능한iterable객체는 시퀀스 언패킹 연산자sequence unpacking operator 사용하여 언패킹 가능
변수를 할당하는 문장에서 왼쪽 두개 이상의 변수를 사용하고 한 변수 앞에 * 연산자가 붙으면, 오른쪽 값들 중 할당되고 남은 값들이 * 연산자가 붙은 변수에 할당
>>> x, *y = (1,2,3,4)
>>> x
1
>>> y
[2,3,4]
>>> *x, y = (1,2,3,4)
>>> x
[1,2,3]
>>> y
4
2.3.3 네임드 튜플
일반 튜플과 비슷한 성능과 특성 but 튜플 항목을 인덱스 위치 뿐만 아니라 이름으로도 참조 가능
collections.namedtuple()
-
첫 번째 인수: 만들고자 하는 사용자 정의 튜플 데이터 타입의 이름(보통 왼쪽에 할당하는 변수의 이름과 똑같이 사용)
-
두 번째 인수: 사용자 정의 튜플 각 항목을 지정하는 ‘공백으로 구분된 문자열’ (리스트 또는 튜플 가능)
>>> import collections
>>> Person = collections.namedtuple('Person', 'name age gender')
>>> # Person = collections.namedtuple('Person', ['name', 'age', 'gender'])
>>> # Person = collections.namedtuple('Person', ('name', 'age', 'gender'))
>>> p = Person('아스틴', 30, '남자')
>>> p
Person(name = '아스틴', age = 30, gender = '남자')
>>> p[0]
'아스틴'
>>> p.name
'아스틴'
>>> p.age = 20 # 에러: 일반 튜플과 마찬가지로 불변형이다.
Trabeback (most recent call last):
File "<stdin>", line 1, in <module>
AttiributeError: can't set attribute