랭귀지/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]