【发布时间】:2013-09-27 04:32:27
【问题描述】:
我正在阅读 Python 文档以真正深入了解 Python 语言,并遇到了过滤器和映射函数。我以前使用过过滤器,但从未使用过映射,尽管我在 SO 上的各种 Python 问题中都见过这两种情况。
在 Python 教程中阅读了它们之后,我对两者之间的区别感到困惑。比如来自5.1.3. Functional Programming Tools:
>>> def f(x): return x % 2 != 0 and x % 3 != 0
...
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
和
>>> def cube(x): return x*x*x
...
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
这些对我来说在功能上看起来几乎完全相同,所以我进入终端以交互方式运行 Python 并测试了我自己的案例。我对上面的第一个和第二个实例都使用了map,而对于第一个(return x % 2 != 0 and x % 3 != 0),它返回一个布尔值列表而不是数字。
为什么map 有时返回布尔值而有时返回实际返回值?
有人能准确解释一下map 和filter 之间的区别吗?
【问题讨论】:
标签: python functional-programming map-function filterfunction