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

标签 python filter boolean

当我尝试过滤 [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/

相关文章:

php - boolean 表达式应该如何用PHP编写?

java - 使用 MouseMotionListener 时出现问题

python - Django 和 eBay 风格的多列表

Python 2 和 3 're.sub' 不一致

Python:尽管尝试了多种方法,ABP 位仍然没有翻转,如何修复?

javascript - 使用 jQuery 进行多复选框过滤

javascript - 通过过滤器的另一个对象过滤对象数组

java - 将过滤选项添加到 JTable 的列标题

java - 如何创建 Boolean 类的 bean 对象

python - 百胜百胜不工作