lev*_*evi 0 python for-loop map
做一些测试.我怀疑,哪个选项更好,使用a map
或a for
(基于性能,空间,时间等).
map(myfunction,xrange(n))
Run Code Online (Sandbox Code Playgroud)
要么
for element in xrange(n):
myfunction(element)
Run Code Online (Sandbox Code Playgroud)
谢谢.
正如你所写的,绝对是for
循环. map
将在python2.x上创建一个不必要的list
(None
因为这可能是返回值myfunction
) - 并且在python3.x上,在你实际迭代结果之前,它根本不会调用你的函数!
换句话说,只有map
在您真正想要迭代的结果时才使用.切勿将其用于功能的副作用.为了向前兼容,永远不要假设map
返回值是list
- 如果需要list
,请使用列表推导:
[myfunction(e) for e in lst]
Run Code Online (Sandbox Code Playgroud)
如果你确实想要一个可迭代的,并且你正试图在类似的生成器表达式之间做出决定map
- 它可归结为一个偏好问题.速度的差异几乎总是可以忽略不计.我认为大多数人更喜欢发生器在美学方面的表达,但有些项目(取决于开发人员)可能更喜欢map
.与周围的代码保持一致......