Programming/Python

filter() 리스트, 튜플 등에서 조건에 맞는 요소만 추려내는 내장함수

makeitworth 2021. 5. 4. 12:08

filter(조건 함수, 순회 가능한 데이터)

입력: 순회가능한 데이터 (리스트, 튜플), 조건함수 (파이썬 내장함수, 사용자 정의함수)

출력: filter객체

 

 

filter 는 리스트, 튜플, 셋 같은 순회 가능한 자료 타입 (iterable data type)의 원소들을 특정 함수를 통해 걸러서 출력하는 내장 함수이다.

 

lst = [1,2,3,4,5]
def over_4(x):
    return x > 4
    
list(filter(over_4, lst))

[5]

 

4이상의 수만 리턴하는 함수 over_4 를 정의하고, filter 내에 함수와, 리스트를 넣었더니, 함수의 조건에 해당되는 요소들만 출력되었다.

함수를 미리 정의하지 않고 람다 함수를 활용해서 한 줄에 처리할 수도 있다.

 

list(filter(lambda x: x > 4 ,lst))

[5]

 

map()함수와 비슷하게 filter()함수도 출력값이 filter 객체이다. list()나 tuple() 등의 함수로 싸주지 않으면, filter객체가 리턴되기 때문에 조건에 맞는 원소들을 리턴 받을 수 없다.

filter(lambda x: x > 4 ,lst)

<filter at 0x10c857280>

 

list comprehension을 활용해도 필터 함수와 같은 결과를 얻을 수 있다.

[x for x in lst if x > 4]

[5]