我想知道我是否具有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是正确的,我应该以这种方式优先处理我的陈述吗?
很抱歉,如果已经提出问题。我可能找不到合适的词汇来搜索。
谢谢。
答案 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上处理它。