1

我是 Python 的新手。我只是想知道是否可以在 O(1) 时间内找到列表或元组的长度。(len() 是 O(n))

在C中,我可以实现如下类似的事情:

int a[] = {1, 2, 3, 4 ,5};
printf("Length of Array a is :: %d\n", sizeof(a)/sizeof(a[0]));

我知道上述概念适用于地址,这就是为什么它在 C 中是可能的,而根据我的理解,Python 不处理地址。但是,出于好奇,我仍然想问这个问题。

4

2 回答 2

6

len()在 Python 中调用列表是O(1). 见这里

于 2012-09-12T03:07:27.840 回答
3

这在 C 中的 O(1) 中起作用的原因不是因为它处理“地址”,而是因为在编译时知道大小。事实上,如果你在一个动态分配的数组上使用 sizeof(),你总是会得到一个指针的大小。

在 python 中,虽然你想使用 len()。

于 2012-09-12T03:08:47.747 回答