List Objects¶
- PyTypeObject
PyList_Type
¶ 此实例
PyTypeObject
表示Python列表类型。这是与Python层中的list
相同的对象。
- PyObject*
PyList_New
(Py_ssize_t len)¶ - 返回值:新引用。
成功时返回长度len的新列表,或在失败时返回NULL。
注意
如果len大于零,则返回的列表对象的项目设置为
NULL
。因此,在使用PyList_SetItem()
将所有项目设置为真实对象之前,不能使用抽象API函数(例如PySequence_SetItem()
或将对象暴露给Python代码)。
- Py_ssize_t
PyList_GET_SIZE
(PyObject *list)¶ 没有错误检查的
PyList_Size()
的宏形式。
- PyObject*
PyList_GetItem
(PyObject *list, Py_ssize_t index)¶ - 返回值:借用引用。
返回列表所指向的列表中索引位置的对象。位置必须为正,不支持从列表结尾索引。如果index超出范围,请返回NULL并设置
IndexError
异常。
- PyObject*
PyList_GET_ITEM
(PyObject *list, Py_ssize_t i)¶ - 返回值:借用引用。
不带错误检查的
PyList_GetItem()
的宏形式。
- int
PyList_SetItem
(PyObject *list, Py_ssize_t index, PyObject *item)¶ 将列表中索引索引处的项目设置为项目。成功时返回
0
,失败时返回-1
。注意
此函数“偷取”对项的引用,并放弃对受影响位置列表中已有项目的引用。
- void
PyList_SET_ITEM
(PyObject *list, Py_ssize_t i, PyObject *o)¶ 没有错误检查的
PyList_SetItem()
的宏形式。这通常只用于填充没有以前内容的新列表。注意
此宏“偷窃”对项的引用,并且与
PyList_SetItem()
不同,不会丢弃对正在替换的任何项的引用;在位置i的列表中的任何引用将被泄漏。
- int
PyList_Insert
(PyObject *list, Py_ssize_t index, PyObject *item)¶ 将项目插入到索引索引前的列表列表中。如果成功,返回
0
;返回-1
并设置异常如果不成功。类似于list.insert(index, item)
。
- int
PyList_Append
(PyObject *list, PyObject *item)¶ 在列表列表末尾添加对象项。如果成功,返回
0
;返回-1
并设置异常如果不成功。类似于list.append(item)
。
- PyObject*
PyList_GetSlice
(PyObject *list, Py_ssize_t low, Py_ssize_t high)¶ - 返回值:新引用。
返回列表中包含 低和高之间的对象的对象列表。返回NULL并设置异常,如果不成功。类似于
list[low:high]
。不支持从Python进行切片时的负索引。
- int
PyList_SetSlice
(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)¶ 将低和高之间的列表切片设置为itemlist的内容。类似
列表[low:high] = itemlist
。项目列表可以是NULL,指示空列表的分配(片段删除)。成功时返回0
,失败时返回-1
。不支持从Python进行切片时的负索引。
- int
PyList_ClearFreeList
()¶ 清除空闲列表。返回已释放项目的总数。
版本3.3中的新功能。