Day_2 02. Pythonic code
작성일
Pythonic code
1. Split & join
1.1 Split
- string type의 값을 “기준값”으로 나눠서 List 형태로 변환
1.2 join
- “기준값”으로 List의 값을 하나로 합침
2. list comprehension
- 기존 List 사용하여 간단히 다른 List를 만드는 기법
- 포괄적인 List, 포함되는 리스트라는 의미로 사용됨
- 파이썬에서 가장 많이 사용되는 기법 중 하나
- 일반적으로 for + append 보다 속도가 빠름
3. Enumerate & Zip
3.1 enumerate
- list의 element를 추출할 때 번호를 붙여서 추출
3.2 zip
- 두 개의 list의 값을 병렬적으로 추출함
4. lambda & map & reduce
4.1 lambda
- 함수 이름 없이, 함수처럼 쓸 수 있는 익명 함수
- 수학의 람다 대수에서 유래함
- python3 부터는 권장하지는 않으나 여전히 많이씀
f = (lambda x, y : x + y)
f(10, 50)
60
- lambda problems
- 어려운 문법
- 테스트의 어려움
- 문서화 docstring 지원 미비
- 코드 해석의 어려움
- 이름이 존재하지 않는 함수의 출현
- 그래도 많이 쓴다.
4.2 map
- 두 개 이상의 list에도 적용 가능함, if filter도 사용가능
- python3 는 iteration을 생성 -> list을 붙여줘야 list 사용가능
- 실행시점의 값을 생성, 메모리 효율적
- map(함수, 리스트)
- 리스트 컴프리헨션 으로 쓰는걸 권장하지만 많이 씀
4.3 reduce
- map function과 달리 list에 똑같은 함수를 적용해서 통합
- from functools import reduce
5. Iterable objects
- Sequence 형 자료형에서 데이터를 순서대로 추출하는 object
- 내부적 구현으로
__iter__
와__next__
가 사용됨 - iter() 와 next() 함수로 iterable 객체를 iterator object로 사용
6. Generator
- iterable object를 특수한 형태로 사용해주는 함수
-
- element가 사용되는 시점에 값을 메모리에 반환
- yield를 사용해 한번에 하나의 element만 반환함
-
일반적인 iterator는 generator에 반해 훨씬 큰 메모리 용량 사용
-
- list 타입의 데이터를 반환해주는 함수는 generator로 만들어라!
- 읽기 쉬운 장점, 중간 과정에서 loop이 중단될 수 있을 때!
-
- 큰 데이터를 처리할 때는 generator expression을 고려하라!
- 데이터가 커도 처리의 어려움이 없음
- 파일 데이터를 처리할 때도 generator를 쓰자
7. function passing arguments
7.1 keyword arguments
- 함수에 입력되는 parameter의 변수명을 사용, arguments를 넘김
7.2 default arguments
- parameter의 기본 값을 사용, 입력하지 않을 경우 기본값 출력
8. varible-length asterisk
8.1 가변인자 (variable-length)
- 개수가 정해지지 않은 변수를 함수의 parameter로 사용하는 법
- Keyword arguments와 함께, argument 추가가 가능
- Asterisk(
*
) 기호를 사용하여 함수의 parameter를 표시함 - 입력된 값은 tuple type으로 사용할 수 있음
- 가변인자는 오직 한 개만 맨 마지막 parameter 위치에 사용가능
- 가변인자는 일반적으로
*args
를 변수명으로 사용 - 기존 parameter 이후에 나오는 값을 tuple로 저장함
8.2 키워드 가변인자 (Keyword variable-length)
- Parameter 이름을 따로 지정하지 않고 입력하는 방법
- asterisk(
*
) 두개를 사용하여 함수의 parameter를 표시함 - 입력된 값은 dict type으로 사용할 수 있음
-
가변인자는 오직 한 개만 기존 가변인자 다음에 사용
- parameter 의 순서는
argument
,keyword argument
,*args
,**kwargs
로 지켜져야 한다. - 키워드형태를 뒤에 써야함
8.3 asterisk
- 흔히 알고 있는
*
를 의미함 - 단순 곱셈, 제곱연산, 가변 인자 활용 등 다양하게 사용됨
- tuple, dict 등 자료형에 들어가 있는 값을 unpacking
- 함수의 입력값, zip 등에 유용하게 사용가능
print(*["1", "2", "3", "4"])
1 2 3 4
print(["1", "2", "3", "4"])
["1", "2", "3", "4"]
- dict 타입을 풀어 줄 때는
**
두개를 사용한다.
댓글남기기