Python:如何执行`len()`

use*_*114 6 python

可能重复:
len()函数的开销

Python如何计算列表的长度(使用len()函数)?它是通过一个forwhile 循环来做同样的事情还是有一些内部变量来存储列表的长度?

Pet*_*rin 5

是的,CPython列表有一个内部变量的长度.

它被称为ob_size; 所有可变大小的对象都有它.


Sim*_*ker 5

它使用一个内部变量来存储列表的长度(与Python中的所有其他可变长度对象类型一样).所以len()是一个O(1)操作,不管列表的大小(即它在恒定时间内运行).

这里的LEN()对名单实施,这里的Py_SIZE宏调用,而这里的ob_size的声明说Py_SIZE使用.


eum*_*iro 4

a = range(10)
b = range(1000000)

timeit len(a) # 85.4 ns
timeit len(b) # 94.4 ns
Run Code Online (Sandbox Code Playgroud)

它看起来不像一个循环。