list对象

python中的list对象和c++中的vector类似

typedef struct {
    PyObject_VAR_HEAD
    PyObject **ob_item;  // 指向元素列表所在的内存块的首地址
    Py_ssize_t allocated;  // 预分配的大小 当前分配的内存实际可容纳的数量
} PyListObject;

列表中实际存放的是PyObject指针

创建

PyList_New(Py_ssize_t size)

创建列表同时指定该列表初始的元素个数

另外,创建时也会使用缓冲池技术,利用free_lists来进行创建,但初始时,缓冲池中并不会预先创建很多PyListObject在其中,仅创建一个

赋值

赋值即为改变指针的指向,此前进行索引检查

插入

先判断空间是否够用,够用,把插入点之后的元素都往后移动一个位置,再放入该元素

销毁

关于缓冲池的特殊操作:如果进行list销毁时,如果缓冲池未满(因为初始创建时不会填充),则把该list清空放入缓冲池中

你可能感兴趣的:(list对象)