我是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不处理地址。但是为了好奇,我仍然想问这个问题。
答案 0 :(得分:6)
在Python中的列表上调用len()
是O(1)
。请参阅here。
答案 1 :(得分:3)
这在C中的O(1)中起作用的原因不是因为它处理“地址”而是因为在编译时已知大小。实际上,如果您在动态分配的数组上使用sizeof(),您将始终获得指针的大小。
在python中虽然你想使用len()。