아미(아름다운미소)

python filter 본문

랭귀지/python

python filter

유키공 2019. 4. 3. 12:43

filter 함수는 첫 번째 인수로 함수 이름을, 두 번째 인수로 그 함수에 차례로 들어갈 반복 가능한 자료형을 받습니다. 그리고 두 번째 인수인 반복 가능한 자료형 요소들이 첫 번째 인수인 함수에 입력되었을 때 리턴값이 참인 것만 묶어서(걸러내서) 리턴합니다.

1
2
3
4
5
6
7
8
def positive(l):
    result = []
    for i in l:
        if i > 0:
            result.append(i)
    return result
 
print(positive([1,-8,2,0,-9,6]))

결과: [1, 2, 6]

positive 함수는 리스트를 입력값으로 받아 각각의 요소를 판별해서 양수값만 리턴하는 함수입니다.

filter 함수를 이용하면 위의 내용을 아래와 같이 간단하게 작성할 수 있다.

1
2
3
4
def positive(x):
    return x > 0
 
print(list(filter(positive, [1, -7, 2, 0, -8, 6])))

결과 : [1, 2, 6]

여기서는 두 번째 인수인 리스트의 요소들이 첫 번째 인수인 positive 함수에 입력되었을 때 리턴값이 참인 것만 묶어서 돌려줍니다. 앞의 예에서는 1, 2, 6만 양수여서 x > 0 이라는 문장이 참이 되므로 [1, 2, 6]이라는 결과값을 리턴하게 된 것입니다.

lambda를 이용하면 더욱 간편하게 코드를 작성할 수 있습니다.

1
list(filter(lambda x: x > 0, [1, -4, 2, 0, -5, 6]))

결과 : [1, 2, 6]

Comments