1. 강의 내용
3-1. Python Data Structure
- 스택과 큐
스택 : 나중에 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조 (LIFO)
리스트, collections.deque() 사용
큐 : 먼저 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조
리스트 - append(),get(), pop(0)
- 튜플과 집합
tuple : 값의 변경이 불가능한 리스트
연산,인덱싱, 슬라이싱 가능
프로그램을 작동하는 동안 변경되지 않는 데이터의 저장 (학번, 이름 등)
(1) 하나만 넣으면 정수로 인식
집합(set) : 값을 순서없이 저장, 중복 없이
intersection()교집합, difference()차집합
- 사전 (dict): key값(데이터를 구분 지을 수 있는 고유한 값)-value값 함께 저장
{key:value}
- collections 모듈 : list,tuple,dict 에 대한 python built-in 확장 자료구조 모듈
Deque : 큐와 스택을 지원( 리스트에 비해 효율적 )
rotate, reverse 등 linked list의 특성 지원
popleft, extend, extendleft
OrderedDict : 순서 보장
defaultdict : dict type의 값에 기본 값 지정, 신규값 생성시 사용
Counter : Sequence type 의 data element 들의 갯수를 dict 형태로 반환
Set의 연산 지원
namedtuple : Tuple 형태로 Data 구조체 저장하는 방법
저장되는 data의 Variable을 사전에 지정해서 저장
from collections import namedtuple
Point = namedtuple('Point', ['x','y'])
p = Point(11,y=22)
print(p[0]+p[1]) # (11,22)
x,y = p
print(x,y) # 11 22
print(p.x+p.y) # 33
print(Point(x=11,y=22)) # Point(x=11,y=22)
3-2. Pythonic Code
파이썬 스타일의 코딩 기법
- split & join
split : string type 의 값을 기준값으로 나눠서 List 형태로 반환
join : string 으로 구성된 List를 합쳐 하나의 string으로 반환
- list comprehension
기존 list를 사용하여 간단히 다른 list를 만드는 기법
for append 보다 속도가 빠름
ex) [ i for i in range(10)]
- enumerate & zip
enumerate : list의 element를 추출할 때 번호를 붙여서 추출
zip : 두 개의 list의 값을 병렬적으로 추출함
- lambda & map & reduce ( 직관성이 떨어짐 )
lambda : 함수 이름 없이 함수처럼 쓸 수 있는 익명함수
map : 두 개 이상의 list에도 적용 가능, if filter도 사용 가능
reduce : list에 똑같은 함수를 적용해서 통합
from functools import reduce
print(reduce (lambda x,y : x+y, [1,2,3,4,5]))
# 15
- iterable object
sequence형 자료형에서 데이터를 순서대로 추출하는 object
cities = ["Seoul","Busan","Jeju"]
iter_obj = iter(cities)
print(next(iter_obj))
print(next(iter_obj))
print(next(iter_obj))
print(next(iter_obj))
- generator
iterable object를 특수한 형태로 사용해주는 함수
element가 사용되는 시점에 값을 메모리에 반환
: yield를 사용해 한번에 하나의 element만 반환함
def generator_list(value):
result=[]
for i in range(value):
yield i
list comprehension과 유사한 형태로 generator 형태의 list 생성
gen_ex = (n*n for n in range(500))
- function passing arguments
함수에 입력되는 arguments의 다양한 형태
1) Keyword arguments
함수에 입력되는 parameter의 변수명을 사용, arguments를 넘김
2) Default arguments
parameter의 기본값을 사용, 입력하지 않을 경우 기본값 출력
3) Variable-length arguments
가변인자 : 개수가 정해지지 않은 변수를 함수의 Parameter로 사용 , 맨 마지막 parameter에 사용 가능
Asterisk(*) 기호를 사용하여 함수의 parameter를 표시함 (*args)
입력된 값은 tuple type로 사용 가능
4-1. Python Object - Oriented Programming
객체지향 프로그래밍
객체 : 실생활에서 일종의 물건
속성(변수)과 행동(함수)
클래스와 실제 구현체 인스턴스
- Attribute 추가
def __init__(self,...)
- method 구현
def chage_back_number(self,new_number):
반드시 self 추가해야만 class 함수로 인정
상속 : 부모클래스로부터 속성과 Method를 물려받은 자식 클래스를 생성하는것
다형성(Polymorphism) : 같은 이름 메소드의 내부 로직을 다르게 작성
가시성 ( Visibility ) : 객체의 정보를 볼 수 있는 레벨 조절
캡슐화 (Encapsulation) : 클래스는 설계할 때, 클래스 간 간섭, 정보공유의 최소화
4-2. Module and Project
모듈 : 작은 프로그램 조각들
모듈들을 모아서 하나의 큰 프로그램 개발
모듈화 시키면 다른 프로그램이 사용하기 쉬움
.py 파일을 저장한 후 import 문을 사용해서 호출
Built-in Modules : 파이썬이 기본 제공하는 라이브러리 (random, time,.....)
패키지 : 모듈을 모아놓은 단위, 하나의 프로그램
다양한 오픈 소스들이 모두 패키지로 관리됨
각 폴더별로 모듈 관리
5-1. Exception / File / Log Handling
Exception :
- 예상 가능한 예외 - 사전에 인지할 수 있는 예외, 사용자의 잘못된 입력, 파일 호출시 파일 없음, 개발자가 반드시 명시적으로 정의
- 예상 불가능한 예외 - 인터프리터 과정에서 발생하는 예외, 개발자 실수
Built-in Exception : 기본적으로 제공하는 예외
- IndexError : List의 Index 범위를 넘어갈 때
- NameError : 존재하지 않은 변수를 호출할 때
- ZeroDivisionError : 0으로 숫자를 나눌 때
- ValueError : 변환할 수 없는 문자/숫자를 변환할 때
- FileNotFoundError : 존재하지 않는 파일을 호출할 때
예외 처리 ( Exception Handling)
- try ~ except ~ else 문법
try :
예외 발생 가능 코드
except <Exception Type>:
예외 발생시 대응하는 코드
else :
예외가 발생하지 않을 때 동작하는 코드
- try ~ except ~ finally
try :
예외 발생 가능 코드
except <Exception Type>:
예외 발생시 대응하는 코드
finally :
예외 발생 여부와 상관없이 실행
- raise <Exception Type>
필요에 따라 강제로 Exception 발생
File Handling
- 파일 시스템 : OS에서 파일을 저장하는 트리구조 저장 체계
- 디렉토리 : 폴더 또는 디렉토리 - 파일과 다른 디렉토리 포함 가능
- 파일 : 컴퓨터에서 정보를 저장하는 논리적인 단위
f = open("<파일이름>", "접근모드(r,w,a)")
f.close()
r - 읽기모드, w - 쓰기 모드, a - 추가모드
f.read() : 파일의 내용을 문자열로 변환
f.readlines() : 파일을 한줄씩 읽어 list로 반환
f.readline(): 실행할때마다 한줄씩 읽어오기
f.write(data) : 파일 쓰기
Logging
프로그램이 실행되는 동안 일어나는 정보기록 남기기
import logging
logging.debug("틀렸어")
logging.info("확인")
logging.warning("warning")
logging.error("error")
logging.critical("critical")
logging level : debug > info > warning > error > critical
configparser : 프로그램의 실행 설정을 file에 저장 (Dict)
argparser : console창에서 프로그램 실행시 setting 정보 저장
5-2. Python data handling
CSV, WEB(HTML), XML, JSON
CSV (Comma Seperate Value)
- 필드를 쉼표로 구분한 텍스트 파일
- 엑셀 양식의 데이터를 프로그램에 상관없이 쓰기 위한 데이터 형식
Web
- 데이터 표시하기 위해 HTML 형식 사용
HTML(Hyprt Text Markup Language)
- 웹 상의 정보를 구조적으로 표현하기 위한 언어
- 제목, 단락, 링크 등 요소 표시를 위해 <Tag> 사용
- 트리 모양의 포함관계
- 정규식으로 추출 용이
XML(eXtensible Markup Language)
- 데이터의 구조와 의미를 설명하는 TAG를 사용하여 표시하는 언어
- Tag 와 Tag 사이에 값이 표시되고, 구조적인 정보를 표현할 수 있음
- 컴퓨터간에 정보를 주고받기 유용한 저장 방식
JSON (JavaScript Object Notation)
- 웹언어인 JavaScript의 데이터 객체 표현 방식
- 간결성으로 기계 인간이 모두 이해하기 편함
- 데이터 용량이 적고 코드로 전환이 쉬움
- XML의 대체
- json 모듈을 사용하여 쉽게 파싱 가능
- dict type 과 상호호환
2. Peer Session
- AI Boost camp
- Python Basics for AI ~5강
- AI Math ~4강
- 알고리즘 스터디
'Boostcamp AI Tech > [week 1-5] LEVEL 1' 카테고리의 다른 글
[Week 2 - Day1] Deep Learning Basic (0) | 2021.08.09 |
---|---|
[Week 1 - Day 5] AI Math 5-10 확률론, 통계학, CNN, RNN (0) | 2021.08.06 |
[Week 1 - Day 4] AI Math 1-4 벡터, 행렬, 경사하강법 (0) | 2021.08.05 |
[Week 1 - Day 3] Python 6,7 (Numpy, Pandas) (0) | 2021.08.05 |
[Week 1 - Day 1] python 1,2 (0) | 2021.08.02 |