Review
Pythonic Code
- 다른사람의 코드를 참고하거나 일관성 있는 코드작성, 효율성 등의 이유로 pythonic한 코드를 작성하여야 한다(거의 표준).
- 아래와 같은 방법으로 pythonic한 code를 만들 수 있다.
split & join
- 리스트가 주어져 있을때 '기준'.join(list)와 같은식으로 각각의 원소들을 기준으로 합칠 스 있고, str을 str.split(기준) 과 같이 자를 수 있다.
List Comprehension
import pprint
case1=['A','B','C']
case_2=['1','2','3']
a=[i+j for i in case1 for j in case_2]
pprint.pprint(a)
b=[[i+j for i in case_2] for j in case1]
print(b)
- list comprehension을 사용하여 위와 같이 간결한 코딩이 가능하다.(pprint는 조금더 보기 좋게 출력 하게 해주는 라이브러리 이다.)
enumerate & zip
zip은 같은 인덱스에 있는 원소들을 묶어주는 역할을 하고, enumerate는 리스트나 문자열 등 iterable한 객체에 인덱스 별 번호를 부여하여 같이 리턴해주는 역할을 한다. zip으로 같은 인덱스 원소를 묶고, enumerate로 같은원소를 묶은 하나의 원소별 인덱스를 부여하여 자주 사용된다.
ex) d=list(enumerate(zip(a,b))
lambda & map & reduce
lambda는 (한번쓰고 버리는)이름이 없는 함수를 만들때 사용한다.(ex)key에 option을 부여할떄
map은 리스트 각각의 원소에 대해 작업을 해줄때 자주 사용되는데, 현재는 권장되어지지 않는다.(list comprehension이 권장됨)
reduce는 대용량의 데이터를 다룰때 사용됨
generator
- 메모리절약 측면에서 상당히 좋다.
- ex=(n for n in range(5000)) vs ex=[n for n in range(5000)] // 후자는 메모리를 많이 잡아먹지만 generator로 생성한 ex(전자) 의 경우에는 상당히 적은 메모리를 잡아먹으며 필요할 때마다 값을 가져와 사용해 줄 수 있다.
asterisk
- ex)def asterisk_test(a,b,*args) 와 같이 함수를 선언할 때에, a,b 뒤에 위치한 *args와 같은 식으로 매개변수를 적어 줄 수 있는데 이는 값의 갯수가 정해져 있지 않기 때문에, 조금 더 동적인 코드가 될 수 있다.
def t(one,two,*args,**kwards):
print(args)
print(kwards)
t(10,30,1,2,3,4,5,6,7,a=2,c=4,d=2)
위의 코드에서 네번째 매개변수는 dic의 형태로 인자들을 받아줄 수 있다.
위의 코드에서 항상 함수를 호출할때 넣어주는 값들은 위와같은 형식을 지키며 순서대로 들어가야한다.
과제리뷰
basic-math
- 간단하게 해결 할 수 있었던 문제였다.
text-processing 1,2
- 마찬가지로 파이썬의 내장함수들을 사용하여 해결하였다.(코딩테스트와 유사)
baseball-game
- 비교적 간단한 기능임에도 함수별로 기능을 모두 나누고 요하는 기능을 정상적으로 수행 할 수 있는지를 물어보는 과제였다. 이런식으로 코딩을하면 협업 시에 굉장히 유용할 것 같았다. +제한사항,제시된 조건 등을 꼼꼼히 읽지 못해서 조금 헤맸다.
느낀점
- 파이썬에 대하여 잘 알고 있다고 생각했었는데 그런 생각이 완전히 깨지는 하루였다. 정말 많고 효율적인 라이브러리들의 존재와 활용되는 상황 등에 대해 자세히 공부 할 수 있었고, pprint와 같은 가독성을 위한 라이브러리, pythonic한 코드가 무엇이고, 왜 pythonic한 코드를 짜기위해 노력해야 되는지, asterisk와 같은 개념을 알고 적용하여 조금 더 유연한 코드를 작성할 수 있다는 사실들을 배웠고 공부하였다.
Peer Session
- 오늘 강의에서 배운 pythonic한 code를 작성하는 방법에 대하여 토론하였고, 어제 나온 과제 코드 피드백을 주고받았다. 꼭 강의 내용과 커리큘럼상의 내용이 아니더라도 공부를하며 궁금했던 내용들을 질문하고 토론하였다.
'AI' 카테고리의 다른 글
[부스트캠프 AI Tech] day10 (0) | 2021.01.25 |
---|---|
[부스트캠프 AI Tech] day5 (0) | 2021.01.22 |
[부스트캠프 AI Tech] day4 (0) | 2021.01.21 |
[부스트캠프 AI Tech] day2 (0) | 2021.01.19 |
[부스트캠프 AI Tech] day1 (0) | 2021.01.18 |