什么会阻止过滤器返回0?

Nup*_*pur 3 python boolean filter

当我尝试过滤时[1,2,0,3,8],if x < 3: return x我最终得到了[1,2].为什么0不包含在此列表中?

def TestFilter(x):
    if x < 3: 
        return x

a = [1,2,0,3,8]
b = filter(TestFilter, a)
print b
Run Code Online (Sandbox Code Playgroud)

pla*_*aes 10

每次函数返回True filter()时,都会将原始列表中的当前元素添加到新列表中.Python认为0False和任何其他数字True.因此,您希望函数返回True而不是数字.

def TestFilter(x):
    if x < 3: 
       return True
Run Code Online (Sandbox Code Playgroud)

编辑:这是一个lambda示例:

a = [1, 2, 3, 0, 4, 8]
print filter(lambda x: x < 3, a)
Run Code Online (Sandbox Code Playgroud)

  • 更好:`返回x <3`. (6认同)