[Python] - Named Tuple
이번에는 named tuple을 알아보겠습니다. named tuple은 일반 튜플과는 조금 다릅니다. 일반 튜플은 인덱스로 접근하여 각 인덱스가 무슨 역할인지 알기 힘들지만 named tuple은 말그대로 "named" 이름으로 접근하기 때문에 무슨 역할인지 알기 쉽습니다. 이제 코드를 보면서 알아 보겠습니다.
일반적인 튜플
pt1 = (1.0,5.0)
pt2 = (2.5,1.5)
from math import sqrt
line_leng1 = sqrt((pt2[0] - pt1[0])**2 + (pt2[1] - pt1[1])**2)
pt1 = (1.0,5.0)
pt2 = (2.5,1.5)
from math import sqrt
line_leng1 = sqrt((pt2[0] - pt1[0])**2 + (pt2[1] - pt1[1])**2)
코드를 보시면 튜플을 선언한 다음 "line_leng1"에 접근할 때 인덱스로 접근하는 것을 볼 수 있습니다. 그렇게 되면 위에서 설명한 것 처럼 각 인덱스가 무슨 수인지 알기 쉽지 않습니다.
코드 결과값
print(line_leng1)
Named Tuple 사용
from collections import namedtuple
from collections import namedtuple
이 코드는 collections라는 모듈에서 named tuple를 가져오는 코드입니다. named tuple를 사용하기 위해서는 무조건 이 코드가 필요합니다.
Kim = namedtuple('Kim' ,'x y')
이 코드는 namedtuple을 선언하는 코드입니다. "kim" 변수에 namedtuple("tuple이름", '원소 원소')식으로 선언하는 것입니다. 또한 선언방식은 여러가지가 있습니다.
Named tuple 선언방식
- Point1 = namedtuple('Point', ['x','y'])
- Point2 = namedtuple('Point', 'x, y')
- Point3 = namedtuple('Point', 'x y')
- Point4 = namedtuple('Point', 'x y x def', rename=True)
선언방식 4번째는 원소이름이 x로 중복이 되었고, def는 파이썬내의 함수를 만들때 사용하는 것이기 때문에 원소이름이 될 수 없기에 rename=True를 통해 python내에서 이름을 다시 지정해주는 것입니다. 그렇게 되면 오류가 발생하지 않습니다..
pt1 = Kim(1.0,5.0)
pt2 = Kim(2.5,1.5)
line_leng2 = sqrt((pt2.x - pt1.x)**2 + (pt2.y - pt1.y)**2)
코드 결과값
print(line_leng2)
이 코드는 위에 일반적 튜플과 결과값이 같은 코드입니다. 그렇지만 named tuple을 사용하여 구현한 것입니다. "pt1" 변수에 선언한 named tuple인 kim내의 각 원소에 들어갈 값을 저장하는 것입니다. 이제 pt1에는 x에는 1.0, y에는 5.0이 저장되었습니다. 이제 line_leng2를 "pt1"과 "pt2"내의 원소이름인 x,y로 접근하는 것을 볼 수 있습니다. 이름으로 접근하기 때문에 x, y가 무슨 수인지 알기 편한 장점이 있습니다.
Author And Source
이 문제에 관하여([Python] - Named Tuple), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@xchdtk/Python-Named-Tuple저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)