列表对象¶
-
PyTypeObject PyList_Type¶
- 稳定 ABI 的一部分。
此
PyTypeObject
实例表示 Python 列表类型。这与 Python 层中的list
是同一个对象。
-
PyObject *PyList_New(Py_ssize_t len)¶
- 返回值:新引用。稳定 ABI 的一部分。
如果成功,则返回长度为 len 的新列表,如果失败,则返回
NULL
。注意
如果 len 大于零,则返回的列表对象的项将设置为
NULL
。因此,在使用PyList_SetItem()
将所有项设置为真实对象之前,你不能使用PySequence_SetItem()
等抽象 API 函数或将对象公开给 Python 代码。
-
Py_ssize_t PyList_Size(PyObject *list)¶
- 稳定 ABI 的一部分。
返回 list 中列表对象的长度;这等同于列表对象上的
len(list)
。
-
Py_ssize_t PyList_GET_SIZE(PyObject *list)¶
类似于
PyList_Size()
,但没有错误检查。
-
PyObject *PyList_GetItem(PyObject *list, Py_ssize_t index)¶
- 返回值:借用的引用。 稳定 ABI 的一部分。
返回 list 指向的列表中位置为 index 的对象。位置必须是非负数;不支持从列表末尾开始索引。如果 index 超出范围(<0 或 >=len(list)),则返回
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)¶
- 稳定 ABI 的一部分。
将列表中索引为 index 的项设置为 item。成功时返回
0
。如果 index 超出范围,则返回-1
并设置IndexError
异常。注意
此函数“窃取”对 item 的引用,并放弃对列表中受影响位置的项的引用。
-
void PyList_SET_ITEM(PyObject *list, Py_ssize_t i, PyObject *o)¶
PyList_SetItem()
的宏形式,不进行错误检查。这通常仅用于填充没有先前内容的新列表。注意
此宏“窃取”对 item 的引用,并且与
PyList_SetItem()
不同,它不会丢弃对任何被替换的项的引用;list 中位置 i 处的任何引用都将泄露。
-
int PyList_Insert(PyObject *list, Py_ssize_t index, PyObject *item)¶
- 稳定 ABI 的一部分。
将项 item 插入到列表 list 中,位于索引 index 之前。如果成功,则返回
0
;如果失败,则返回-1
并设置异常。类似于list.insert(index, item)
。
-
int PyList_Append(PyObject *list, PyObject *item)¶
- 稳定 ABI 的一部分。
将对象 item 附加到列表 list 的末尾。如果成功,则返回
0
;如果失败,则返回-1
并设置异常。类似于list.append(item)
。
-
PyObject *PyList_GetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high)¶
- 返回值:新引用。稳定 ABI 的一部分。
返回一个列表,其中包含 list 中介于 low 和 high 之间的对象。如果失败,则返回
NULL
并设置异常。类似于list[low:high]
。不支持从列表末尾进行索引。
-
int PyList_SetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)¶
- 稳定 ABI 的一部分。
将列表list中low和high之间的切片设置为itemlist的内容。类似于
list[low:high] = itemlist
。itemlist可以是NULL
,表示分配一个空列表(删除切片)。成功时返回0
,失败时返回-1
。不支持从列表末尾开始索引。