Python:`len()`是如何执行的

7 投票
4 回答
660 浏览
提问于 2025-04-17 06:06

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

Python是怎么计算一个列表的长度的(使用len()函数)?它是通过for循环或while循环来实现的吗,还是有某个内部变量专门用来存储列表的长度呢?

4 个回答

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

timeit len(a) # 85.4 ns
timeit len(b) # 94.4 ns

这看起来不像是一个循环。

5

它使用了一个内部变量来存储列表的长度(就像Python中所有其他可变长度的对象类型一样)。所以,len()这个函数的运行时间是O(1),无论列表的大小如何(也就是说,它的运行时间是固定的,不会随着列表的大小变化而变化)。

这里是列表的len()实现,这里是它调用的Py_SIZE宏,还有这里是Py_SIZE使用的ob_size声明

5

是的,CPython中的列表有一个内部变量用来表示长度。

这个变量叫做 ob_size;所有 可变大小的对象 都有这个变量。

撰写回答