可能重复:
Cost of len() function
Python如何计算列表的长度(使用len()
函数)?是通过for
还是while
循环来执行相同的操作?有一些内部变量存储列表的长度吗?
答案 0 :(得分:5)
是的,CPython列表有一个内部变量。
它被称为ob_size
;所有variable-sized objects都拥有它。
答案 1 :(得分:5)
它使用一个内部变量来存储列表的长度(与Python中的所有其他可变长度对象类型一样)。所以len()是一个O(1)操作,不管列表的大小(即它在恒定时间内运行)。
以下是implementation of len() for lists,这里是它调用的Py_SIZE macro,这里是Py_SIZE使用的declaration of ob_size。
答案 2 :(得分:4)
a = range(10)
b = range(1000000)
timeit len(a) # 85.4 ns
timeit len(b) # 94.4 ns
它看起来不像一个循环。
答案 3 :(得分:3)
从python的角度来看,len()
函数调用类的__len__()
方法,该方法返回内部已知的长度。