filter() 함수
조회수 299회
# 일반 함수
def even(x):
if x % 2 == 0:
return x
# 리스트
two = [i for i in range(10)]
# filter() + 일반 함수
list(filter(even, two))
의 예상 출력은
[0, 2, 4, 6, 8]
이었는데 실제 출력은
[2, 4, 6, 8]
입니다.
여기서 왜 0이 출력되지 않는지 모르겠습니다. 고수님들 도와주세요!
1 답변
-
even 함수는 true 또는 false 를 반환하는 함수여야 합니다.
def even(x): return x%2 == 0
현재의 even 함수가 대략동작하는 이유는
- 짝수가 아닌 경우 None 을 반환하게 되고, None 은 false로 해석됩니다.
- 정수형값을 boolean 으로 해석하려 할 때, 0은 false 로, 그 이외의 값은 true 로 해석됩니다. ( python truthy, falsy 로 검색해 보세요.) 그래서, 2, 4 등은 filter 의 결과로 남게 되지만, 0은 걸러지게 됩니다.
- 우와... 정말 궁금했는데!!!! 정말 감사해요!!!!!!!!!! 와... 불리언 문제였다니!! 정말 감사합니다!!!! kiy7605@gmail.com 2022.11.11 08:37
댓글 입력