https://www.tutorialspoint.com/namedtuple-in-python
Namedtuple in Python
Namedtuple in Python The NamedTuple is another class, under the collections module. Like the dictionary type objects, it contains keys and that are mapped to some values. In this case we can access the elements using keys and indexes. To use it at first we
www.tutorialspoint.com
정의 : 네임드Tuple은 Collections 모듈 아래에 있는 다른 클래스입니다. 사전 유형 개체와 마찬가지로 키가 포함되어 있으며 일부 값에 매핑됩니다. 이 경우 키와 인덱스를 사용하여 요소에 액세스할 수 있습니다. 처음에 사용하려면 컬렉션 표준 라이브러리 모듈을 가져와야 합니다.
튜플을 딕셔너리처럼 사용가능하고, 요소에 키또는 인덱스로 접근이 가능하다. ( data 사용/접근에 용이함)
코드
# Chapter03-03
# 파이썬 심화
# 데이터 모델(Data Model)
# 참조 : https://docs.python.org/3/reference/datamodel.html
# Namedtuple 실습
# 파이썬의 중요한 핵심 프레임워크 -> 시퀀스(Sequence), 반복(Iterator), 함수(Functions), 클래스(Class)
# 객체 -> 파이썬의 데이터를 추상화
# 모든 객체 -> id, type -> value
# 일반적인 튜플 사용
pt1 = (1.0, 5.0)
pt2 = (2.5, 1.5)
from math import sqrt
from this import d
l_leng1 = sqrt((pt2[0] - pt1[0]) ** 2 + (pt2[1] - pt1[1]) ** 2)
print(l_leng1)
# 네임드 튜플 사용
from collections import namedtuple
# 네임드 튜플 선언
Point = namedtuple('Point', 'x y')
# 두 점 선언
pt3 = Point(1.0, 5.0)
pt4 = Point(2.5, 1.5)
# 계산
l_leng2 = sqrt((pt4.x - pt3.x) ** 2 + (pt4.y - pt3.y) ** 2)
# 출력
print(l_leng2)
print(l_leng1 == l_leng2)
# 네임드 튜플 선언 방법
Point1 = namedtuple('Point1', ['x', 'y'])
Point2 = namedtuple('Point2', 'x, y')
Point3 = namedtuple('Point3', 'x y')
Point4 = namedtuple('Point4', 'x y x class', rename=True) # Default=False
# 출력
print(Point1, Point2, Point3, Point4)
print()
print()
# Dict to Unpacking
temp_dict = {'x': 75, 'y': 55}
# 객체 생성
p1 = Point1(x=10, y=35)
p2 = Point2(20, 40)
p3 = Point3(45, y=20)
p4 = Point4(10, 20, 30, 40)
p5 = Point3(**temp_dict)
# 출력
print(p1, p2, p3, p4, p5)
print()
print()
# 사용
print(p1[0] + p2[1]) # Index Error 주의
print(p1.x + p2.y) # 클래스 변수 접근 방식
# Unpacking
x, y = p3
print(x+y)
# Rename 테스트
print(p4)
print()
print()
# 네임드 튜플 메소드
temp = [52, 38]
# _make() : 새로운 객체 생성
p4 = Point1._make(temp)
print(p4)
# _fields : 필드 네임 확인
print(p1._fields, p2._fields, p3._fields)
# _asdict() : OrderedDict 반환
print(p1._asdict(), p4._asdict())
# 실 사용 실습
# 반20명 , 4개의 반-> (A,B,C,D) 번호
# 네임드 튜플 선언
Classes = namedtuple('Classes', ['rank', 'number'])
# 그룹 리스트 선언
numbers = [str(n) for n in range(1, 21)]
# 1~20 순으로 n에 넣으면서 str(n)에 리스트형식으로 append해줌
ranks = 'A B C D'.split()
# List Comprehension 중첩으로 쓴거
students = [Classes(rank, number)
for rank in ranks
for number in numbers]
print(len(students))
print(students)
# 추천
students2 = [Classes(rank, number)
for rank in 'A B C D'.split()
for number in [str(n)
for n in range(1,21)]]
print()
print()
print(len(students2))
print(students2)
print()
print()
# 출력
for s in students:
print(s)
네임드 튜플 사용 하기전에
이 공식을 표현해보자 ( 일반적인 튜플 이용 )
sqrt는 루트, **은 제곱
네임드 튜플을 이용해 공식을 표현해보면
네임드 튜플 기본 형식

네임드튜플 + 리스트 컴프리헨션
A 1 B 1 C 1 D 1
A 2 B 2 C 2 D 2
A 3 B 3 ~~~
A ~ B ~
A 20 B 20 C 20 D 20
형식으로 만드는거
1.
2.
출력은
'C++,python (인프런+사이트) > python 파이썬 정리' 카테고리의 다른 글
Comprehending Lists으로 Generator 만들기 + 깊복,얕복 (0) | 2022.04.01 |
---|---|
파이썬 자료형 정리 (0) | 2022.04.01 |
List Comprehension 리스트 컴프리헨션 +(딕셔너리 + 튜플) (0) | 2022.04.01 |
매직 메소드_오퍼레이터같은 (0) | 2022.03.31 |
객체vs인스턴스vs클래쓰 & 인스턴스메서드vs클래스메서드vs스태틱메서드 (0) | 2022.03.31 |
댓글