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清空放入缓冲池中