전문적인 정보를 다루는 것이 아닌 개인적으로 학습한 내용에 대해
포스팅을 했기 때문에 이점을 감안하여 봐주시면 감사하겠습니다👏
네임드 튜플(Named Tuple)
클래스와는 다르고 collection module 하위에 있으며, dictionary 형태와 같이 key와 value 형태로 mapping 됩니다.
튜플인데 딕셔너리 형태를 갖고 있습니다. 요소에 key 또는 index로 접근할 수 있으며 데이터를 가공하거나 주고받을 때 독특한 성질을 갖고 있습니다.
# 네임드 튜플
from collections import namedtuple
# 네임드 튜플 선언
Point = namedtuple('Point', 'x y')
pt3 = Point(1.0, 5.0) # 클래스 형태로 튜플을 추상화 하고 있습니다.
클래스 형태로 튜플 성질을 갖고 있으며, value 형태로 접근이 가능합니다 예를 들어, x이면 1.0, y이면 5.0의 의미입니다.
또한, 인덱스로도 접근을 가능한데 0이면 1.0, 1이면 5.0을 의미합니다.
print(pt3) # Point(1.0, 5.0)
print(pt3[0]) # 1.0 -> 인덱스로 접근
print(pt3.x) # 1.0 -> key로 접근
인덱스와 key 접근이 가능한 것을 활용하여 다음과 같이 적용할 수 있습니다.
l_leng1 = sqrt((pt1[0] - pt2[0]) ** 2 + (pt1[1] - pt2[1]) ** 2) # 인덱스 활용
l_leng1 = sqrt((pt3.x - pt3.x) ** 2 + (pt3.y - pt3.y) ** 2) # key를 활용
네임드 튜플을 생성하는 4가지 방법입니다.
# 네임드 튜플
Point1 = namedtuple('Point', ['x', 'y'])
Point2 = namedtuple('Point', 'x, y')
Point3 = namedtuple('Point', 'x y')
Point4 = namedtuple('Point', 'x y x class', rename= True) # Default = False
# 객체 생성
p1 = Point1(x=10, y = 35)
p2 = Point2(20, 40)
p3 = Point3(45, y = 20)
p4 = Point4(10, 20, 30, 40)
Point4가 특이한 형태인데 class는 예약어나 중복된 key가 있을 경우 rename = True 옵션을 주면 만들어질 수 있습니다.
네임트 튜플 메소드
#_make() : 새로운 객체 생성
p4 = Point1._make(temp)
print(p4) # Point(x=52, y=38)
#_fields : 필드 네임 확인
print(p1._fields, p2._fields, p3._fields) # ('x', 'y') ('x', 'y') ('x', 'y')
# _asdict() : OrderDict 변환
print(p1._asdict()) # {'x': 10, 'y': 35}
- 참고
- 인프런 강의
'Language > Python' 카테고리의 다른 글
[Python] 데코레이터(Decorator) (0) | 2021.11.17 |
---|---|
[Python] Scope에 대한 이해 (0) | 2021.11.10 |
[Python] 매직 메서드(Magic Method) (0) | 2021.10.24 |
[Python] 함수는 1급 객체이다 (0) | 2021.07.16 |
[Python] 컴프리헨션 (0) | 2021.07.08 |
댓글