filter() 함수

조회수 109회
# 일반 함수
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 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    even 함수는 true 또는 false 를 반환하는 함수여야 합니다.

    def even(x):
        return x%2 == 0
    

    현재의 even 함수가 대략동작하는 이유는

    1. 짝수가 아닌 경우 None 을 반환하게 되고, None 은 false로 해석됩니다.
    2. 정수형값을 boolean 으로 해석하려 할 때, 0은 false 로, 그 이외의 값은 true 로 해석됩니다. ( python truthy, falsy 로 검색해 보세요.) 그래서, 2, 4 등은 filter 의 결과로 남게 되지만, 0은 걸러지게 됩니다.
    • 우와... 정말 궁금했는데!!!! 정말 감사해요!!!!!!!!!! 와... 불리언 문제였다니!! 정말 감사합니다!!!! 블루소금 2022.11.11 08:37

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.