做一些测试。我怀疑,哪个选项更好,使用map
或for
(基于效果,空间,时间等)。
map(myfunction,xrange(n))
或
for element in xrange(n):
myfunction(element)
感谢。
答案 0 :(得分:5)
正如你所写的那样,一定要使用for
循环。 map
将在python2.x上创建一个不必要的list
(所有None
,因为这可能是myfunction
的返回值) - 并且在python3.x上,它赢了在你实际迭代结果之前,根本不要调用你的函数!
换句话说,只有在您真正想要迭代的结果时才使用map
。切勿将其用于功能的副作用。为了向前兼容,永远不要假设map
的返回值是list
- 如果您需要list
,请使用列表解析:
[myfunction(e) for e in lst]
如果你确实想要一个可迭代的并且你试图在类似的生成器表达式和map
之间做出决定 - 那么归结为一个偏好问题。速度差异几乎总是可以忽略不计。我认为大多数在美学方面更喜欢生成器表达式,但是一些项目(取决于开发人员)可能仍然更喜欢map
。与周围的代码保持一致......
答案 1 :(得分:0)
我想到的一件事是
for element in list:
# you can do something to element here
myfunction(element)
在map(myfunction,list)
还有一些副作用的考虑。