哪个是更好的选择,使用Map还是For循环?

时间:2014-08-21 02:22:44

标签: python for-loop map

做一些测试。我怀疑,哪个选项更好,使用mapfor(基于效果,空间,时间等)。

map(myfunction,xrange(n))

for element in xrange(n):
    myfunction(element)

感谢。

2 个答案:

答案 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)

中无法做同样的事情

还有一些副作用的考虑。