condition priority in if-else for efficiency
我想知道我是否有其他条件,或者是否有以下条件:
1 2 3 4 5 6 7 8 9 10 11 | if conditionA: do A elif conditionB: do B elif conditionC: do C ... ... ... else: do z |
Q1。如果我已经知道我的条件在
Q2。同样地,如果问题1是真的,我是否应该这样对我的陈述进行优先级排序?
如果已经问过这个问题,请道歉。我可能找不到合适的词汇来搜索这个。
谢谢您。
Q.1和Q.2:是
根据python文档
An if … elif … elif … sequence is a substitute for the switch or case
statements found in other languages.
这意味着一旦代码执行了一个真正的条件,它就会退出if…elif…elif…序列。
你看到这些条件需要O(1)时间,你可以说它与你随同写的其他代码相比可以忽略不计,所以就像你随同写的代码有两个嵌套的循环O(n^2),那么这些条件与你的整体算法相比可以忽略不计。
此外,这会告诉您估计的复杂性。
但另一方面,我会说你必须把它放在条件A中,因为你在这些条件中所放的可能有它们各自的时间复杂性。
假设在python中使用
1 2 3 4 5 6 7 | st = 'hello' * (2 ** 999) # hellohellohellohe... if 'hey' in st: print('hey, I found it') else: print('well..') |
它大约需要θ(n)和O(mn),其中m是字符串,n是要比较的子字符串。
看看这个python子字符串。
所以,总结一下,最好的方法是在条件A下。