许多有关len(...)
费用的问题已得到解答,但我找不到任何Python文档的链接。
是标准的(在某些PEP中有记录)还是在大多数Python实现中当前如何实现?
答案 0 :(得分:2)
有关某些内置python对象的时间复杂度的文档是here。
python中的len()
函数只调用类中的__len__
方法。所以如果你构建了一个自定义类
class SlowLenList(object):
def __init__(self, mylist):
self.mylist = mylist
def __len__(self):
total = 1
for item in self.mylist:
total += 1
return total
然后在这种情况下复杂度为O(n)。所以它真的取决于你所呼唤的对象。我假设内置列表和其他对象是O(1),因为它们在实例上有一个属性,每次将项添加到对象时它都会递增。