2024-09-26 18:13:41 发布
网友
我正在用python浏览https://wiki.python.org/moin/TimeComplexity个列表。我知道python列表在内部是一个数组。但是列表的内部长度是O(1)。因为它需要遍历到列表的末尾,然后递增计数器并返回它。你知道吗
O(1)
提前谢谢
TL;DR列表记录它们的长度。你知道吗
在CPython中,调用len([])调用Py_SIZEC宏,它只返回ob_size属性的值。你知道吗
len([])
Py_SIZE
ob_size
https://github.com/python/cpython/blob/cda73a5af2ff064ca82140342b3158851d43868f/Objects/listobject.c#L438-L442
static Py_ssize_t list_length(PyListObject *a) { return Py_SIZE(a); }
https://github.com/python/cpython/blob/9bdd2de84c1af55fbc006d3f892313623bd0195c/Include/object.h#L128
#define Py_SIZE(ob) (_PyVarObject_CAST(ob)->ob_size)
TL;DR列表记录它们的长度。你知道吗
在CPython中,调用
len([])
调用Py_SIZE
C宏,它只返回ob_size
属性的值。你知道吗https://github.com/python/cpython/blob/cda73a5af2ff064ca82140342b3158851d43868f/Objects/listobject.c#L438-L442
https://github.com/python/cpython/blob/9bdd2de84c1af55fbc006d3f892313623bd0195c/Include/object.h#L128
相关问题 更多 >
编程相关推荐