아미(아름다운미소)

python filter 본문

랭귀지/python

python filter

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

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

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 함수를 이용하면 위의 내용을 아래와 같이 간단하게 작성할 수 있다.

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를 이용하면 더욱 간편하게 코드를 작성할 수 있습니다.

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

결과 : [1, 2, 6]

Comments