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

2 回答 2

4

您的函数 ( lambda x:x) 的结果被视为布尔值,并且bool(0)False. 的工作filter()是排除函数返回的所有元素False。从文档中:

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

于 2013-03-03T07:57:25.993 回答
0

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

顺便说一句,你的表情

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

可以等效地写为

>>> filter(None,[4,0,4,0,0,2])
于 2013-03-03T08:27:44.057 回答