상위 목록: 하위 목록: 작성 날짜: 읽는 데 7 분 소요

필터(filter) 함수

필터(filter) 함수는 반복 가능한 데이터(목록, 사전 등)의 요소에서 특정 조건을 만족하는 값들만 추출합니다.

필터 함수는 결괏값 = filter(조건 함수, 범위)의 형태로 사용합니다.

조건 함수논리값(True or False)을 반환하는 함수를 사용하며, 참(True)이 되는 값만 반환합니다.

lambda 함수와 list 함수 등을 같이 사용하여 결과를 반환합니다.



함수 생성

f = lambda x: x > 0

print(list(filter(f, range(-5, 5))))
결과
[1, 2, 3, 4]

filter(함수, 범위)를 사용하여 참(True)의 결과를 반환합니다.

범위의 값을 함수에 대입해 참이 되는 값만을 묶어 반환홥니다.

list() 또는 set() 등의 구문을 추가하지 않으면 <filter object at 0x05B3A830> 등의 iterator 형태로 출력됩니다.



사용자 정의 함수 사용

def func(x):
    if x > 0:
        return x
    else:
        return x - 100


print(list(filter(func, range(-5, 5))))
결과
[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]

필터 함수에서 사용되는 함수는 논리값을 반환하는 함수로 인지합니다.

그러므로, 반환값이 0이 아닌 모든 값은 참(True) 값으로 간주하게 됩니다.

결국, 어떤 반환 형태도 0을 반환하지 않으므로 모두다 참 값이 되어, 범위를 그대로 반환하게 됩니다.


def func(x):
    if (x / 2) - 1 > 0:
        return True
    elif x % 2 == 0:
        return True 
    else:
        return False


print(list(filter(func, range(-5, 5))))
결과
[-4, -2, 0, 2, 3, 4]

사용자 정의 함수를 이용한다면, 복잡한 형태의 필터 함수를 쉽게 구현할 수 있습니다.

반환값이 인 경우에만 해당 값을 반환하므로, 특정한 형태의 데이터만 추출할 수 있습니다.

  • Tip : 반환값이 없는 경우, 거짓(False) 값으로 간주해 필터 함수에서 값이 반환되지 않습니다.

댓글 남기기