最好的方法是使用 set :
if cond in {'1','2','3','4'}:
因为集合中的成员资格测试为O(1)(不变成本)。
其他两种方法的复杂度相同。只是固定成本的差异。in
测试既有清单又有or
链条短路;找到匹配项后立即终止。一种使用字节码跳转序列(如果为True
,则跳转到末尾),另一种使用C循环,如果值匹配则使用早期退出。在最坏的情况下,在这里cond
也没有 匹配两种方法必须检查的序列中的元素 所有 的元素它可以返回之前False
。在这两者中,我每天都会选择in
测试,因为它更具可读性。