可能是重复问题:
len() 函数的成本
Python 如何计算列表的长度(使用 len()
函数)?它是否通过 for
或 while
循环来执行相同的操作,还是有一些内部变量存储了列表的长度?
可能是重复问题:
len() 函数的成本
Python 如何计算列表的长度(使用 len()
函数)?它是否通过 for
或 while
循环来执行相同的操作,还是有一些内部变量存储了列表的长度?
a = range(10)
b = range(1000000)
timeit len(a) # 85.4 ns
timeit len(b) # 94.4 ns
它看起来不像是一个循环。
从Python的角度来看,len()
函数调用了类的__len__()
方法,该方法返回内部已知的长度。
x
是如何实现的”和“x
的成本是多少”是两个不同的问题,具有不同的答案。 - Petr Viktorinx
的成本之外,还提供了一个相当大的线索,说明x
是如何实现的。例如,如果len
运行在O(1)中,那么你可以非常确定地说它有一个内部变量;O(N)可能意味着它逐个计数;而更高的成本则意味着Python开发人员很蠢。 :) - cHao