python3中for循环的效率

python3中for循环的效率,python,Python,我目前正在学习Python(3),主要是有R作为主要编程语言的经验。虽然在Rfor中,循环的功能基本上与Python中的相同,但我被教导避免将其用于大型操作,而是使用更高效的apply 我的问题是:对于Python中的-循环有多高的效率,是否有替代方案,作为Python新手,是否值得探索这些可能性 例如: p = some_candidate_parameter_generator(data) for i in p: fit_model_with paramter(data, i) 请

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

我的问题是:
对于Python中的
-循环有多高的效率,是否有替代方案,作为Python新手,是否值得探索这些可能性

例如:

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

请耐心听我说,要给出一个示例而不涉及太多具体的代码是很难的。但是在
R
中,我会用
apply
来写这件事,特别是当
p
很大的时候。

注释正确地指出for循环“只和逻辑一样有效”;但是,Python中的
range
xrange
确实会影响性能,这可能是您在提出此问题时的想法。不过,这些方法与for循环的内在性能无关

在Python3.0中,
xrange
现在隐式地只是
range
;然而,在低于3.0的Python版本中,过去有一个区别——
range
将整个iterable加载到内存中,然后对每个项进行迭代,而
xrange
更类似于生成器,其中每个项仅在需要时加载到内存中,然后在迭代后从内存中删除

更新问题后:


换句话说,如果您有一个庞大的项目列表,需要通过for循环进行迭代,那么使用生成器(而不是列表或元组等)通常会更节省内存。不过,这与Python for循环的运行方式无关,而与您正在迭代的内容有关。如果有疑问,使用生成器,您的内存效率将与Python一样高。

您可以使用一个大型操作的示例吗?在sigle sentance中,它们与您的逻辑一样高效根据文档,apply函数“从2.3版起已弃用”:。它在Python 3中并不存在,这通常很难回答,而且实际上取决于您需要实现什么。如果您需要在某个对象上循环,那么这可能是最有效的。但是,如果您可以,例如,使用生成另一个生成器的
map
,则这是一件完全不同的事情,并且可能更高效。但这也是一个苹果对桔子的比较。@Tryph,没有等价物?嗯,我对发电机不熟悉,所以我肯定要读更多关于这方面的内容。