如何在python中以固定时间查找列表/元组的大小

如何在python中以固定时间查找列表/元组的大小,python,pointers,Python,Pointers,我是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不处理地址。不过出于好奇,我还是想问这个问题。在Python的列表中调用len()是O

我是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不处理地址。不过出于好奇,我还是想问这个问题。

在Python的列表中调用
len()
O(1)
。请参阅。

在Python的列表中调用
len()
O(1)
。请参阅。

在C中的O(1)中,这种方法之所以有效,并不是因为它处理“地址”,而是因为编译时已知大小。事实上,如果在动态分配的数组上使用sizeof(),则始终会得到指针的大小

在python中,虽然您希望使用len()。

但在C中的O(1)中,这种方法之所以有效,并不是因为它处理“地址”,而是因为编译时已知大小。事实上,如果在动态分配的数组上使用sizeof(),则始终会得到指针的大小


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

你可以做
sys.getsizeof(my_list)/sys.getsizeof(my_list[0])
但是这在
my_list=[1,2,“apple”,12.3,[1,2,3].
出于明显的原因,你真的读过
len()
是O(n)吗?你可以做
sys.getsizeof(my_list)/sys.getsizeof(my_list)/[0])
然而,这在类似于
my_list=[1,2,“apple”,12.3[1,2,3]]
这样的情况下是行不通的。原因很明显,你有没有读到过
len()
是O(n)?出于好奇,你为什么会认为它是O(n)哦,哇。我会说这只是一个随机想法,列表将首先遍历以获得长度。出于好奇,你为什么会认为它是O(n)?哦,哇。我会说这只是一个随机想法,列表将首先遍历以获得长度。