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로 변환시켜서 사용합니다.