Python中* in *运算符的复杂性


问题内容

inPython中运算符的复杂性是什么?是theta(n)吗?

与以下相同吗?

def find(L, x):
   for e in L:
       if e == x:
           return True
   return False

L 是一个列表。


问题答案:

的复杂性in完全取决于是什么Le in L将成为L.__contains__(e)

有关几种内置类型的复杂性,请参见此时间复杂性文档

这是以下内容的摘要in

  • 列表-平均值:O(n)
  • 设置/ dict-平均:O(1),最差:O(n)

集合和字典的O(n)最坏情况很少见,但如果__hash__实施不当,则可能发生。仅当您集合中的所有内容都具有相同的哈希值时,才会发生这种情况。