ㅍㅍㅋㄷ

python - filter 함수. 어렵지 않아요 본문

Programming/Python

python - filter 함수. 어렵지 않아요

클쏭 2019. 1. 24. 16:30

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


Comments