9

可能重复:
len() 函数的成本

是否len()遍历列表中的对象然后返回它们的计数?因此给它一个O(n)

或者....

python列表是否保留附加到它并从中删除的任何对象的计数,然后在len()调用时简单地返回这个“计数”?因此给它O(1)

4

2 回答 2

14

Python 列表知道自己的长度;len花费O(1) 时间列表实际上是数组length,而不是像 Lisp 中那样需要线性时间的链表。

于 2012-09-09T20:00:28.100 回答
11

对于定义 的所有内置对象__len__(),它将是 O(1)。如果您__len__()为自己的对象实现,它可能是任何东西。

于 2012-09-09T20:00:55.667 回答