python3中for循环的效率

时间:2016-09-12 13:20:48

标签: python

我目前正在学习Python(3),主要使用R作为主要编程语言。虽然在R for中 - 循环具有与Python相同的功能,但我被教导要避免将其用于大型操作,而是使用apply,这样效率更高。

我的问题是:for - Python中的循环效率如何,是否有替代方案,是否值得探索作为Python新手的可能性?

例如:

p = some_candidate_parameter_generator(data)
for i in p:
    fit_model_with paramter(data, i)

忍受我,举一个例子而不过多考虑具体代码是很棘手的。但R我会用apply写一些内容,特别是p很大的时候。

1 个答案:

答案 0 :(得分:2)

评论正确地指出for循环“只有你的逻辑有效”;但是,Python中的rangexrange确实会产生性能影响,这可能是您在提出此问题时的想法。 这些方法与for循环的内在性能无关。

在Python 3.0中,xrange现在隐含只是range;然而,在小于3.0的Python版本中,曾经存在区别 - range将整个迭代加载到内存中,然后迭代每个项目,而xrange更类似于生成器,其中每个item仅在需要时加载到内存中,然后在迭代后从内存中删除。

更新后的问题:

换句话说,如果你有一个巨大的项目列表,你需要通过for循环迭代,使用生成器通常更有内存效率,而不是列表或元组,等等。与for循环的操作无关,而是与迭代的内容有关。如果有疑问,请使用生成器,您的内存效率将与Python相同。