我遇到了一个与我的Python代码有关的问题,但这是我在其他语言中遇到的情况,我想要一个普通答案。在循环中优化条件语句/如何摆脱重复代码
假设我有一个包含许多语句的循环。其中一个陈述取决于在迭代中不会改变的条件。我看到两种方式来实现这一点:
for ... :
... #many statements
if conditionA :
statementA
elif conditionB :
statementB
else
statementC
或:
if conditionA :
for ... :
... #many statements
statementA
elif conditionB :
for ... :
... #many statements
statementB
else :
for ... :
... #many statements
statementC
在第一解决方案,问题是,我们在每次迭代,这是没有必要的测试一些。第二种解决方案有更好的速度,因为它只是一次测试条件,然后相应地启动循环,这正是我想要做的;但现在有很多代码重复(每次都重写许多语句...)。
有没有第三种方式,我没有想到这将是第二个,但没有代码重复效率?谢谢!
编辑:
我在一个类似的主题(Optimizing a Loop vs Code Duplication)是C++编译器已经做了优化(通过将第一个版本到编译过程中第二个)读取。解释性语言如Python如何?
是你的条件显著繁重去测试?如果是这样,你可以将它们的结果赋值给变量,以避免在循环中反复测试它们。 – khelwood
你不能在循环之前计算'conditionA'和'conditionB'的值吗? –
除非您的条件不是O(1),否则时间复杂度*是相同的,无论循环是在条件内还是在其他方式内。很可能你只是为了“速度”而滥用它。 – spectras