일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 재테크
- codecommit
- 커피머니불리기
- Python
- 앱테크
- aws codecommit
- python3
- mininet
- Container
- VPC
- AWS
- 리뷰
- 후기
- docker
- 리워드앱
- built-in
- 실사용
- docker network
- MongoEngine
- Linux
- 하나머니
- DocumentDB
- network
- 포인트앱
- namespace
- S3
- MongoDB
- 도커
- 토스카드
- clone
- Today
- Total
ㅍㅍㅋㄷ
python - filter 함수. 어렵지 않아요 본문
python - filter()
filter 함수는 built-in 함수로 list 나 dictionary 같은 iterable 한 데이터를 특정 조건에 일치하는 값만 추출해 낼때 사용하는 함수이다.
먼저, python docs 의 filter 에 대한 정의를 보면 아래와 같다.
filter(function, iterable)
Construct an iterator from those elements of iterable for which function returns true. iterable may be either a sequence, a container which supports iteration, or an iterator. If function is None, the identity function is assumed, that is, all elements of iterable that are false are removed.
function 에는 일반적인 function 을 정의하여 사용할수도 있지만, 간단한 조건의 경우에는 lambda를 함께 사용하면 굉장히 간결한 형태로 작성 가능하다.
def func(x):
if x > 0:
return x
else:
return None
list(filter(func, range(-5,10)))
>>> [1, 2, 3, 4, 5, 6, 7, 8, 9]
위의 경우, 일반적인 function을 정의하여 -5~10 사이 정수에서 양수만 filtering 하는 것을 작성한 것이다.
이를 lambda를 사용하면 아래와 같이 될 것이다.
list(filter(lambda x: x > 0, range(-5,10)))
>>> [1, 2, 3, 4, 5, 6, 7, 8, 9]
이런 lambda와 filter를 이용한 표현 방식은 generator expression 방식으로도 가능하다.
[ i for i in range(-5,10) if i > 0 ]
>>> [1, 2, 3, 4, 5, 6, 7, 8, 9]
[참고]
- https://docs.python.org/3/library/ast.html#ast.literal_eval
- https://stackoverflow.com/questions/15197673/using-pythons-eval-vs-ast-literal-eval
'Programming > Python' 카테고리의 다른 글
python 3에서는 f-string이 갑이다. (8) | 2019.05.12 |
---|---|
python 3와 python 2의 dictionary 차이 - view object (0) | 2019.02.19 |
python eval 과 literal_eval 의 차이 (1) | 2019.01.22 |
python eval() 함수 - 사용을 조심해야 하는 이유 (4) | 2019.01.22 |
python lambda - 어렵지 않아요 (0) | 2019.01.22 |