当我尝试过滤 [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
最佳答案
每次您的函数返回 True
filter()会将原始列表中的当前元素添加到新列表中。 Python 将 0
视为 False
,将任何其他数字视为 True
。因此,您将希望函数返回 True
而不是数字。
def TestFilter(x):
if x < 3:
return True
编辑:这是一个 lambda 示例:
a = [1, 2, 3, 0, 4, 8]
print filter(lambda x: x < 3, a)
关于python - 什么会阻止过滤器返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11993112/