언어/Python

Python namedtuple (네임드 튜플)

쟈누이 2020. 6. 22. 11:16
반응형

introducing python 을 통해서 알게된 네임드 튜플이다.

간단하게 정리하자면 

보통 튜플의 경우에는 인덱스를 통해서 튜플 접근이 가능한데, namedtuple 을 사용하면 

key 값으로 접근이 가능하다고 볼 수 있다. 

즉, key - value 로 작동하는 딕셔너리와 같이 작동한다고 보면 되지만, 튜플의 성질을 가진다.

(참 뭔가 애매한것 같다..)

 

네임드 튜플은 아래와 같은 특성을 지니고 있다는데

 

1. 튜플의 기본 성질인 불변 객체

2. 일반 Class(객체) 형태보다 적은 메모리 사용

3. 다양한 접근법 지원(괄호, ) 

4. Dictionary Key 와 같이 사용 

 

아래의 예제가 네임드 튜플의 특성을 잘 보여주는 것 같다.

from collections import namedtuple
from math import sqrt

pt1 = (1.0, 5.0)
pt2 = (2.5, 1.5)

line_leng1 = sqrt((pt2[0] - pt1[0])**2 + (pt2[1] - pt1[1])**2)

print(line_leng1)

# 네임드 튜플 선언
Point = namedtuple('Point', 'x y')

# 두 점 선언
pt1 = Point(1.0, 5.0)
pt2 = Point(2.5, 1.5)

# 두점 사이 거리 계산
line_leng2 = sqrt((pt2.x - pt1.x)**2 + (pt2.y - pt1.y) ** 2)

# 출력
print(line_leng2)
print(line_leng1 == line_leng2)

# 네임드 튜플 사용
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

# 출력
print(Point1, Point2, Point3, Point4)

print()
print()

# dict to unpacking
temp_dict = {'x':75, 'y': 55}

# 객체 생성
pt1 = Point1(x=10, y=35)
pt2 = Point2(20, 40)
pt3 = Point3(45, y=20)
pt4 = Point4(10,20,30,40)
pt5 = Point3(**temp_dict)

# 출력
print('pt1:',pt1,'\n','pt2:', pt2,'\n','pt3:', pt3,'\n','pt4:', pt4,'\n','pt5:', pt5,'\n')

print()
print()

# 사용
print(pt1[0] + pt2[1])
print(pt1.x + pt2.y)

결과 이미지는 아래와 같다

 

 

 

참고 링크

https://niceman.tistory.com/197

 

파이썬(Python) - 네임드튜플(namedtuple) 사용 예제 및 소스코드

파이썬(Python) - 네임드 튜플 설명 안녕하세요. 좋은사람 입니다. 오늘은 파이썬 데이터 모델링 파트에서 소개하고 있는 네임드튜플 타입 구조에 대해서 포스팅 합니다. 파이썬에 대용량의 데이�

niceman.tistory.com

http://blog.naver.com/PostView.nhn?blogId=sw4r&logNo=221488347735&parentCategoryNo=&categoryNo=136&viewDate=&isShowPopularPosts=false&from=postView

 

[파이썬(Python)] namedtuple(네임드 튜플) 이란? (_fields 매소드 포함!)

이번에는 간단하게 유용한 튜플 형태를 살펴보자.​namedtuple로 collections 모듈에서 가져올 수 있다. 보...

blog.naver.com

 

반응형