11

python中运算符的速度是否in与可迭代的长度成正比?

所以,

len(x) #10
if(a in x): #lets say this takes time A
    pass

len(y) #10000
if(a in y): #lets say this takes time B
    pass

A > B?

4

2 回答 2

32

总结:

list - Average: O(n)
set/dict - Average: O(1), Worst: O(n)

有关更多详细信息,请参阅内容。

于 2013-11-27T05:58:57.060 回答
7

对此没有一般的答案:这取决于 的类型,a尤其是b. 例如,如果b是一个列表,那么是的,in需要最坏情况时间O(len(b))。但是,例如,如果b是 dict 或 set,则in需要预期情况时间O(1)(即恒定时间)。

关于“Is A > B?”,您没有定义Aor B。如上所述,对于您的哪些in语句会运行得更快,没有一般的答案。

于 2013-11-27T05:59:18.640 回答