Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 filter() 함수란 무엇일까? 개념부터 실전 예제까지 총정리

파이썬의 filter() 함수는 별도로 정의한 필터 조건(함수)에 따라 리스트와 같은 시퀀스에서 특정 요소만 골라내는 내장 함수입니다. 먼저 어떤 기준으로 요소를 걸러낼지 판단하는 사용자 정의 함수를 만들고, 이 함수와 대상 리스트를 filter() 함수의 인자로 전달하면 조건을 통과한 결과를 얻을 수 있습니다.

기본 문법

filter(filter_function, sequence)

filter_function은 각 요소에 대해 True 또는 False를 반환하는 함수이며, sequence에는 리스트, 튜플 등 반복 가능한 객체가 들어갑니다. 참고로 파이썬 3에서 filter()는 필터 객체(iterator)를 반환하므로, 전체 목록이 필요하다면 list()로 감싸주면 됩니다.

예제 1: 짝수 제거하기

아래 예제에서는 리스트에서 짝수를 찾으면 False를 반환해 걸러내고, 나머지 홀수만 최종 결과에 남기는 함수를 만들어 보겠습니다. 이 함수를 살짝 수정하면 3이나 5로 나누어떨어지는 숫자를 필터링하는 것도 가능합니다.

num_list = [6, 17, 32, 11, 21, 132]

def remove_even(x):
    if x % 2 == 0:
        return False
    else:
        return True

odd_nos = filter(remove_even, num_list)
for x in odd_nos:
    print(x)

출력 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

17
11
21

예제 2: 모음만 추출하기

같은 방식으로 알파벳 리스트에서 모음(vowel)만 골라낼 수도 있습니다. 아래 코드는 각 문자가 모음인지 검사한 뒤, 모음일 경우 True를 반환하여 최종 리스트에 남깁니다.

letters = ['t', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's']

def get_vowels(c):
    if c in ['a', 'e', 'i', 'o', 'u']:
        return True
    else:
        return False

vowel_list = filter(get_vowels, letters)
for w in vowel_list:
    print(w)

출력 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

u
o
i
a

마무리

이처럼 filter() 함수는 조건 판단 함수와 반복 가능한 객체만 있으면 복잡한 반복문 없이도 원하는 데이터를 손쉽게 추출할 수 있는 강력한 도구입니다. 실무에서는 위 예제의 조건 함수를 lambda x: x % 2 != 0 같은 람다 표현식으로 간결하게 작성하는 경우도 많으니 함께 익혀두면 유용합니다.