我目前正在学习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
很大的时候。
答案 0 :(得分:2)
评论正确地指出for循环“只有你的逻辑有效”;但是,Python中的range
和xrange
确实会产生性能影响,这可能是您在提出此问题时的想法。 这些方法与for循环的内在性能无关。
在Python 3.0中,xrange
现在隐含只是range
;然而,在小于3.0的Python版本中,曾经存在区别 - range
将整个迭代加载到内存中,然后迭代每个项目,而xrange
更类似于生成器,其中每个item仅在需要时加载到内存中,然后在迭代后从内存中删除。
更新后的问题:
换句话说,如果你有一个巨大的项目列表,你需要通过for循环迭代,使用生成器通常更有内存效率,而不是列表或元组,等等。与for循环的操作无关,而是与迭代的内容有关。如果有疑问,请使用生成器,您的内存效率将与Python相同。