为什么Python列表中的0元素在filter函数中未被包含?
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如,有人可能在使用一个叫做“库”的东西时,发现它的某些功能没有按照预期工作。这种情况可能会让人感到困惑,因为我们可能不知道问题出在哪里。
通常,解决这类问题的方法是仔细检查代码,看看有没有拼写错误,或者参数设置是否正确。有时候,查阅相关文档也能帮助我们理解这个库的使用方式。
另外,向其他开发者请教也是一个不错的选择。社区里有很多人愿意分享他们的经验和解决方案,这样我们就能更快地找到问题的根源。
总之,遇到问题时,不要着急,慢慢分析,寻找解决办法,最终会找到答案的。
>>> print filter(lambda x:x,[4,0,4,0,0,2])
[4, 4, 2]
2 个回答
0
@NPE已经对你观察到的行为做了解释。
顺便提一下,你的表达式
>>> print filter(lambda x:x,[4,0,4,0,0,2])
可以用另一种方式写成
>>> filter(None,[4,0,4,0,0,2])
4
你这个函数的结果(lambda x:x
)被当作布尔值来处理,而bool(0)
的结果是False
。filter()
的作用就是把那些函数返回False
的元素给排除掉。根据文档的说明:
从可迭代对象中构建一个列表,只保留那些函数返回真值的元素。