if-else中的条件优先级以提高效率

时间:2018-11-23 05:55:07

标签: python python-3.x performance if-statement big-o

我想知道我是否具有if-else或if-elif-elif -....- else条件,如下所示:

if conditionA:
    do A
elif conditionB:
    do B
elif conditionC:
    do C
...
...
...
else:
    do z

Q1。如果我已经知道我的条件在conditionC中可以解决99%的时间,那么将该条件设置为第一个条件(而不是conditionA)会提高我的代码效率吗?

Q2。同样,如果Q1是正确的,我应该以这种方式优先处理我的陈述吗?

很抱歉,如果已经提出问题。我可能找不到合适的词汇来搜索。

谢谢。

2 个答案:

答案 0 :(得分:3)

Q.1和Q.2:是

根据Python文档

  

if…elif…elif…序列代替开关或大小写   其他语言的声明。

这意味着一旦代码执行True条件,它将退出if…elif…elif…序列。

答案 1 :(得分:1)

您看到这些条件花费O(1)的时间,可以说与您一起编写的其他代码相比可以忽略不计,因此就像您有一个带有两个嵌套循环的代码O( n ^ 2),那么与您的整体算法相比,条件花费的时间可以忽略不计。

此外,这告诉您估计的复杂程度。

但从其他方面来说,我必须将其置于条件A中,因为您置于这些条件中的内容可能具有各自的时间复杂性。

假设您在python中使用in运算符进行了子字符串搜索, 就像。

st = 'hello' * (2 ** 999) # hellohellohellohe...    

if 'hey' in st: 
    print('hey, I found it')

else:
    print('well..')

大约需要θ(n)和O(MN),其中m是要比较的字符串,n是要比较的子字符串。

看看这个python substring

因此,将其包装起来,首选的方法是在条件A上处理它。