Python filter 필터링 하기

Python filter함수에 대해 살펴보겠습니다.

 

filter함수의 사용법은 아래와 같습니다.

filter(function, iterable) - function: 함수, iterable: 순회 가능한 Object

두 번째 매개변수로 넘어온 iterable 객체를 돌면서 첫 번째 매개변수인 function을 통해 필터링합니다.

# 3의 배수만 필터링하는 코드
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> newNumbers = []
>>> for num in numbers:
       if(num % 3 == 0):
          nuwNumbers.append(num)
          
>>> nuwNumbers
[3, 6, 9]

# filter함수를 이용하면?
>>> def getMultiple(num):
       return (num % 3 == 0)

>>> filteredNumbers = list(filter(getMultiple, numbers))
>>> filteredNumbers
[3, 6, 9]

위처럼 3의 배수를 구하기 위해 for문을 통해 돌리지 않고

filter함수를 통해 좀 더 간단하게 만들 수 있습니다.

 

필터 하는 함수의 내용이 긴 경우에는 함수를 선언하는 것이 좋겠지만 위 예제처럼 짧은 경우

lambda를 사용하면 좀 더 간결한 코드로 사용할 수 있습니다.

>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> filteredNumbers = list(filter(lambda num: num % 3 == 0, numbers))
>>> filteredNumbers
[3, 6, 9]

 

lambda에 관해 살펴보시려면 아래 링크를 참조해주세요

 

Python lambda 함수를 한 줄로 만들기

Python lambda 함수에 대해 살펴보겠습니다 lambda 함수를 통해 이름이 없는 함수를 일시적으로 만들 수 있습니다. 간단하고 반복적이지 않은 기능을 일반적인 함수로 만들지 않고 필요한 곳에서 즉

lcs1245.tistory.com

 

위 예제들을 보시면 filter함수를 사용할 때 list 함수로 변환시켜 주었는데요

그 이유는 filter함수는 filter로 결과를 리턴하기 때문입니다.

>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> filter(lambda num: num % 3 == 0, numbers)
<filter object at 0x016761C0>

그래서 상황에 따라 List나 tuple로 변환시켜서 사용합니다.