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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容