filter,,map并且reduce可以在Python 2中完美运行。这是一个示例:
filter
map
reduce
>>> 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] >>> def add(x,y): return x+y >>> reduce(add, range(1, 11)) 55
但是在Python 3中,我收到以下输出:
>>> filter(f, range(2, 25)) <filter object at 0x0000000002C14908> >>> map(cube, range(1, 11)) <map object at 0x0000000002C82B70> >>> reduce(add, range(1, 11)) Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> reduce(add, range(1, 11)) NameError: name 'reduce' is not defined
如果有人可以向我解释为什么,我将不胜感激。
你可以在Python 3.0新增功能中阅读有关更改的信息。从2.x升级到3.x时,你应该仔细阅读它,因为已经做了很多更改。
此处的完整答案是文档中的引号。
视图和迭代器而不是列表
一些知名的API不再返回列表:
map()并filter()
list(map(...))
map()
for
内建