【发布时间】:2013-05-20 23:18:42
【问题描述】:
results 是一个嵌套列表,如下所示:
>>> results
[[1, 2, 3, 'a', 'b'], [1, 2, 3, 'c', 'd'], [4, 5, 6, 'a', 'b'], [4, 5, 6, 'c', 'd']]
pr 是一个函数,定义如下:
>>> def pr(line):
... print line
结果的正常迭代确实是这样的:
>>> for result in results:
... pr(result)
...
[1, 2, 3, 'a', 'b']
[1, 2, 3, 'c', 'd']
[4, 5, 6, 'a', 'b']
[4, 5, 6, 'c', 'd']
但使用 map 的隐式迭代会导致这种行为:
>>> map(pr, results)
[1, 2, 3, 'a', 'b']
[1, 2, 3, 'c', 'd']
[4, 5, 6, 'a', 'b']
[4, 5, 6, 'c', 'd']
[None, None, None, None]
我的问题:为什么 map 函数会产生额外的迭代?
【问题讨论】:
-
map来自函数式编程语言en.wikipedia.org/wiki/Map_%28higher-order_function%29不应该这样使用 -
@jamylak : pr 是这个问题的演示函数,我在我的代码中应用了其他一些转换。