파이썬 중급 3일차(3)

김영목·2021년 7월 31일
0

파이썬중급

목록 보기
5/18

이번 시간에는 nametuple에 대해서 공부해보았다.

from collections import namedtuple
from math import sqrt

pt1 = (1.0, 2.0)
pt2 = (2.0, 5.0)

점 pt1과 점 pt2 사이의 거리를 구해보자.

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

이러한 방식의 문제는 인덱싱을 실수하면 값이 달라지는 문제점을 안고 있다. 
그래서 각 요소가 무엇인지 key값처럼 알려주는 namedtuple을 사용하면 실수를 줄일 수 잇다. 

네임드 튜플의 사용법(클래스 선언과 유사한 점이 있음)
<여러가지 튜플 선언 방법>
a. Point = namedtuple('point','x y')
b. Point = namedtuple('point', ['x', 'y'])
c. Point = namedtuple('point', 'x, y')
d. Point = namedtuple('point', 'x y z x class' remane=True)

point1 = point(10, 20)
point2 = point(x=15, y=30)
point3 = point(x=20, 40)

만약에 우리가 dic형태의 데이터를 namedtuple로 바꾸고자 한다면 어떻게 해야할까??? 
이때 필요한 방식이 언패킹이다.
dict1 = {'x':20, 'y': 30}
point4 = point(**dict1)

이번에는 리스트형태를 named형태로 바꿔보자.

list1 = [10,50]

point5 = point._make(list1)

namedtuple로 만들어진 데이터의 키값을 알고 싶을때????

print(point5._fields)

namedtuple을 일단 dic으로 바꾸고 싶다면???

print(point3._asdict())

이런식으로 활용하면 됨 다음 장에서는 namedtuple을 활용해보자.

profile
안녕하세요 김영목입니다.

0개의 댓글