Search
Duplicate

Pythonic Code

생성일
2023/02/16 14:39
태그

Pythonic Code

왜 배우나?
남 코드에 대한 이해도
많은 개발자들이 파이썬 스타일로 코딩한다
효율
단순 for loop append보다 list가 조금 더 빠르다
익숙해지면 코드도 짧아진다
쓰면 왠지 코드 잘 짜는 것 처럼 보인다

Split & Join

Split 함수

string type의 값을 “기준값"으로 나눠서 List 형태로 변환

List Comprehension

기존 List 사용하여 간단히 다른 List를 만드는 기법
포괄적인 List, 포함되는 리스트라는 의미로 사용됨
파이썬에서 가장 많이 사용되는 기법 중 하나
일반적으로 for + append 보다 속도가 빠르다

enumerate & zip

enumerate : list의 element 를 추출할 때 번호를 붙여서 추출
zip : 두 개의 list의 값을 병렬적으로 추출함

Lambda & Map & Reduce

Lambda

함수 이름 없이, 함수처럼 쓸 수 있는 익명함수
수학의 람다 대수에서 유래함

Map

두 개 이상의 list에도 적용 가능함
if filter 도 사용가능
python3 는 iteration을 생성 → list을 붙여줘야 list 사용가능
실행시점의 값을 생성, 메모리 효율적

Reduce

map function 과 달리 list에 똑같은 함수를 적용해서 통합
딥러닝에서 많이 사용

Iterable objects

Sequence형 자료형에서 데이터를 순서대로 추출하는 object
내부적 구현으로 __ iter __ 와 __ next __ 가 사용된다
iter() 와 next() 함수로 iterable 객체를 iterator object로 사용

generator

iterable object를 특수한 형태로 사용해주는 함수
element가 사용되는 시점에 값을 메모리에 반환
: yield를 사용해 한번에 하나의 element 만 반환한다
list comprehension 과 유사한 형태로 generator 형태의 list 생성
generator expression 이라는 이름으로도 부른다
[ ] 대신 () 를 사용하여 표현
왜 사용?
일반적인 iterator는 generator에 반해 훨씬 큰 메모리 용량 사용
언제 사용?
list 타입의 데이터를 반환해주는 함수는 generator로 만들어라!
읽기 쉬운 장점, 중간 과정에서 loop 이 중단될 수 있을 때!
큰 데이터를 처리할 때는 Generator expression을 고려하라
데이터가 커도 처리의 어려움이 없음
파일 데이터를 처리할 때도 generator 를 쓰자

function passing arguments

함수에 입력되는 arguments 의 다양한 형태
1.
Keyword arguments
함수에 입력되는 parameter의 변수명을 사용, arguments 를 넘김
2.
Default arguments
parameter의 기본값을 사용, 입력하지 않을 경우 기본값 출력
3.
Variable-length asterisk
가변인자 using asterisk
가변인자
개수가 정해지지 않은 변수를 함수의 parameter로 사용하는 법
Keyword arguments 와 함께, argument 추가가 가능
Asterisk(*) 기호를 사용하여 함수의 parameter 를 표시함
입력된 값은 tuple type 으로 사용할 수 있음
가변인자는 오직 한 개만 맨 마지막 parameter 위치에 사용가능
가변인자는 일반적으로 *args 를 변수명으로 사용
기존 parameter 이후에 나오는 값을 tuple로 저장함

Keyword variable-length (키워드 가변인자)

Parameter 이름을 따로 지정하지 않고 입력하는 방법
asterisk(*) 두개를 사용하여 함수의 parameter 를 표시함
입력된 값은 dict type으로 사용할 수 있음
가변인자는 오직 한개만 기존 가변인자 다음에 사용
머신러닝에서 많이 사용

asterisk

흔히 알고 있는 * 를 의미한다
단순곱셈, 제곱연산, 가변인자 활용 등 다양하게 사용된다

asterisk - unpacking a container

tuple, dict 등 자료형에 들어가 있는 값을 unpacking
함수의 입력값, zip 등에 유용하게 사용가능