[인프런 리프 2기] 3. 파이썬 데이터 모델

2021. 3. 22. 20:01·활동들/인프런 대학생 LEAF 2기
728x90

2주차 미션: 섹션 2 ~ 3

 

섹션 3에서는 매직 메소드(Special Method)에 대해 배웠다.

처음 목차에서 매직 메소드를 봤을 때 이런 것도 있었나? 했지만 내가 알고 있는 것이었고 그냥 필요할 때 구글링으로 막 가져다 쓰다보니 정확한 명칭, 개념을 모르는 것이었다.

 

역시나 코드와 그에 관한 필기는 주석으로 하나의 파일에 작성했다.

 

섹션 3에서 배운 내용은 다음과 같다.

 

  • 파이썬 핵심 구조 설명
  • 매직 메소드 실습
  • 클래스 매직 메소드 실습
  • 매직 메소드 심화
  • 클래스 매직 메소드 실습 코딩
  • 데이터 모델 설계
  • NamedTuple 설명
  • Model Unpacking
  • 네임드 튜플 실습 코딩

 

아래는 강의 내용을 따라 작성한 섹션 3의 최종 코드이다.

# Chapter03
# Special Method(Magic Method)
# 파이썬의 핵심 프레임워크 -> 시퀀스(Sequence), 반복(Iterator), 반복(Functions), 클래스(Class)
# 클래스 안에 정의할 수 있는 특별한(Built-in) 메소드

# Namedtuple 실습

# 객체 -> 파이썬의 데이터를 추상화
# 모든 객체 -> id, type -> value

# 일반적인 튜플
pt1 = (1.0, 5.0)
pt2 = (2.5, 1.5)

from math import sqrt

l_leng1 = sqrt((pt1[0] - pt2[0]) ** 2 + (pt1[1] - pt2[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)

# print(pt3)
# print(pt4)

# index, key 둘 다로 접근 가능
l_leng2 = sqrt((pt3.x - pt4.x) ** 2 + (pt3.y - pt4.y) ** 2)

print(l_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) # 중요 ⭐
# 중복되는 key, 예약어 사용 -> rename = True로 사용 가능 / Default = False

# 출력
print(Point1, Point2, Point3, Point4) # 클래스로

# 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) # dictionary를 unpacking -> 알아서 mapping

print(p1)
print(p2)
print(p3)
# rename 테스트
print(p4) # 중복되는 key에 대해 알아서 변수를 naming
print(p5)

# 사용
print(p1[0] + p2[1])
print(p1.x + p2.y) # key로 접근

# Unpacking
x, y = p2

print(x, y)

# 네임드 튜플 메소드
temp = [52, 38]

# _make() : 새로운 객체 생성 -> list to namedtuple
p4 = Point1._make(temp)

print(p4)

# _fields : 필드 네임 확인
print(p1._fields, p2._fields, p3._fields) # key값만 조회

# _asdict() : OrderedDict 반환 -> namedtuple to dict
print(p1._asdict())
print(p4._asdict())


# 실 사용 실습
# 반 20명, 4개의 반(A, B, C, D)

Classes = namedtuple('Classes', ['rank', 'number'])

# 그룹 리스트 선언
numbers = [str(n) for n in range(1, 21)]
ranks = 'A B C D'.split()

print(numbers)
print(ranks)

# 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(len(students2))
print(students2)

# 출력
for s in students2:
    print(s)

 

 

강의 링크:

우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)

 

우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original) - 인프런 | 강의

본 강의는 파이썬 기초를 배운 학습자가 파이썬을 실무에 활용할 수 있도록 수준 높은 문법을 배우는 데 중점을 두고 있습니다. 파이썬만의 차별점을 파악하고 빠르게 익힘으로써 중급 레벨의

www.inflearn.com

728x90
저작자표시

'활동들 > 인프런 대학생 LEAF 2기' 카테고리의 다른 글

[인프런 리프 2기] 5. 파이썬 일급함수  (0) 2021.03.29
[인프런 리프 2기] 4. 파이썬 데이터 모델  (0) 2021.03.29
[인프런 리프 2기] 2. 파이썬 클래스 심화  (0) 2021.03.22
[인프런 리프 2기] 0.파이썬 중급 소개 & 커리큘럼  (0) 2021.03.13
[인프런 리프 2기] OT 후기 및 각오  (0) 2021.03.09
'활동들/인프런 대학생 LEAF 2기' 카테고리의 다른 글
  • [인프런 리프 2기] 5. 파이썬 일급함수
  • [인프런 리프 2기] 4. 파이썬 데이터 모델
  • [인프런 리프 2기] 2. 파이썬 클래스 심화
  • [인프런 리프 2기] 0.파이썬 중급 소개 & 커리큘럼
soyang.
soyang.
코딩 및 개발 일지를 기록합니다.
  • soyang.
    소소한 코딩일지
    soyang.
  • 전체
    오늘
    어제
  • 링크

    • Github 🐾
    • 포트폴리오 📓 (리뉴얼중)
    • LinkedIn 👩🏻‍💼
  • 공지사항

    • 소소한 코딩일지
  • 블로그 메뉴

    • 방명록
    • 분류 전체보기 (181)
      • 🚩 목표 & 회고 (9)
      • 📓 Papers (10)
      • 🧇 Algorithm (44)
        • 이론 (1)
        • LeetCode (2)
        • 프로그래머스 (30)
        • 백준 (11)
      • 💻 Study (47)
        • 🤖 AI 인공지능 (3)
        • Python 파이썬 (3)
        • Docker 도커 (4)
        • 웹 (20)
        • 안드로이드 (2)
        • JAVA 자바 (1)
        • Firebase (3)
        • Linux 리눅스 (10)
      • 🍪 Projects (2)
      • 🎒 학교 (44)
        • 대학원 도비 (2)
        • 21 동계 모각코: 슈붕팥붕 (13)
        • 21 하계 모각코: 와팬호 (13)
        • 20 동계 모각코: 와팬호 (13)
      • 활동들 (16)
        • 인프런 대학생 LEAF 2기 (9)
        • 2021 Silicon Valley Online .. (7)
  • 태그

    인프런대학생Leaf
    Gentoo
    리액트
    Artificial Intelligence
    백준
    알고리즘
    목표
    공부
    노마드코더
    Algorithm
    프로그래머스
    React
    Linux
    코딩테스트
    Ai
    programmers
    error
    Python
    알고리즘스터디
    모각코
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
soyang.
[인프런 리프 2기] 3. 파이썬 데이터 모델
상단으로

티스토리툴바