我有很多 if
语句,我想为它们找到最优化的序列。
每种情况都有不同的时间复杂度,并且触发的次数也不同。例如,case1
可能是 θ(n^2)
,而 case3
可能是 θ(log(n))
>,但第二个函数会更早停止该函数,因此最好将其放在第一个。
我如何找到最有效的方法来排序 if 语句?
def function1():
if case1:
return False
if case2:
return False
if case3:
return False
# caseN...
return True
最佳答案
要做出明智的设计决策,您需要定义您的目标:
- 如果函数应尽可能快地返回,那么最快的情况可能应该首先执行。
- 但是,如果您希望函数对所有输入数据平均快速返回,那么您可能需要知道哪种情况更适合您的输入数据;如果您期望最多的输入数据落入其中,那么该数据可能应该排在第一位。这样,函数的平均运行时间就可以减少。
但是要做出最佳决定,您需要考虑很多因素:
- 数据的类型(集、列表、字符串……)
- 输入的大小以及调用函数的次数
- 每种情况下完成的操作(是搜索、一些繁重的计算、简单的算术运算……)
- 研究在您的案例中包含尽可能多的短路条件以使其尽早失效的可能性
如果您需要更多帮助,那么您应该为您的问题提供更具体的信息。
关于python - 如何找到最优化的 if 语句序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54686219/