Python:如何执行`len()`

时间:2011-11-11 08:58:29

标签: python

  

可能重复:
  Cost of len() function

Python如何计算列表的长度(使用len()函数)?是通过for还是while 循环来执行相同的操作?有一些内部变量存储列表的长度吗?

4 个答案:

答案 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__()方法,该方法返回内部已知的长度。