【问题标题】:In python list consist an element 0 is not included in filter function,Why? [closed]在python列表中包含一个元素0不包含在过滤函数中,为什么? [关闭]
【发布时间】:2013-03-03 07:55:01
【问题描述】:
>>> print filter(lambda x:x,[4,0,4,0,0,2])
[4, 4, 2]

【问题讨论】:

  • 你希望代码做什么?
  • 因为 Python 不是 Ruby 和 0 == False #=> True 所以过滤 lambda 函数拒绝所有 0

标签: python filter lambda functional-programming


【解决方案1】:

函数的结果 (lambda x:x) 被视为布尔值,bool(0)Falsefilter() 的工作是排除函数返回 False 的所有元素。来自documentation

从函数返回 true 的那些可迭代元素构造一个列表。

【讨论】:

    【解决方案2】:

    @NPE 已经解释了你观察到的行为

    顺便说一句,你的表情

    >>> print filter(lambda x:x,[4,0,4,0,0,2])
    

    可以等价写成

    >>> filter(None,[4,0,4,0,0,2])
    

    【讨论】:

      猜你喜欢
      • 2023-01-27
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多