Python中* in *运算符的复杂性
问题内容:
in
Python中运算符的复杂性是什么?是theta(n)吗?
与以下相同吗?
def find(L, x):
for e in L:
if e == x:
return True
return False
L
是一个列表。
问题答案:
的复杂性in
完全取决于是什么L
。e in L
将成为L.__contains__(e)
。
有关几种内置类型的复杂性,请参见此时间复杂性文档。
这是以下内容的摘要in
:
- 列表-平均值:O(n)
- 设置/ dict-平均:O(1),最差:O(n)
集合和字典的O(n)最坏情况很少见,但如果__hash__
实施不当,则可能发生。仅当您集合中的所有内容都具有相同的哈希值时,才会发生这种情况。