哪个更有效率?如果在for循环中嵌套if,或者在单独的for循环中嵌套if?

时间:2014-05-22 13:33:07

标签: python performance loops

因此,我试图决定哪些更有效,或者它们之间是否存在差异。我编写的程序遍历for循环(python)并执行一些操作,然后根据标志写入文件。

示例A:

for element in list:
    Do stuff
    if(write_to_file):
       write to file

例子B:

for element in list:
    Do stuff
if(write_to_file):
    for element in list:
        write to file

在A的情况下,它必须每次检查它是否为真,但在B的情况下如果为真,则必须重新进行for循环。我的想法是他们是平等的,但我喜欢更有经验的程序员的意见

2 个答案:

答案 0 :(得分:2)

基于您的示例的Big O复杂性分析:

for element in list:
    Do stuff
if(write_to_file):
    for element in list:
        write to file

上述效率较低,因为您正在迭代list两次。

即:O(n) x 2

但是请自己测试一下,使用timeit模块,最重要的是你过早担心优化问题。 让它先工作!

另请阅读:When to optimize

答案 1 :(得分:1)

示例C:

if(write_to_file):
    for element in list:
        Do stuff
        write to file
else:
    for element in list:
        Do stuff

正如其他人所说,你可能无法注意到这些方法之间的区别。