列表对象

类型 PyListObject

PyObject 的子类型表示一个 Python 列表对象。

PyTypeObject PyList_Type
作为 稳定 ABI 的一部分。

PyTypeObject 实例表示 Python 列表类型。这与 Python 层中的 list 对象相同。

int PyList_Check(PyObject *p)

如果 p 是一个列表对象或列表类型子类型的实例,则返回 true。此函数始终成功。

int PyList_CheckExact(PyObject *p)

如果 p 是一个列表对象,但不是列表类型子类型的实例,则返回 true。此函数始终成功。

PyObject *PyList_New(Py_ssize_t len)
返回值: 新引用。 稳定ABI 的一部分。

成功时返回长度为 len 的新列表,失败时返回 NULL

备注

如果 len 大于零,则返回的列表对象的项将设置为 NULL。因此,在通过 PyList_SetItem()PyList_SET_ITEM() 将所有项设置为实际对象之前,您不能使用抽象 API 函数(如 PySequence_SetItem())或将对象公开给 Python 代码。在列表完全初始化之前,以下 API 是安全的 API:PyList_SetItem()PyList_SET_ITEM()

Py_ssize_t PyList_Size(PyObject *list)
作为 稳定 ABI 的一部分。

返回 list 中列表对象的长度;这等价于对列表对象执行 len(list)

Py_ssize_t PyList_GET_SIZE(PyObject *list)

PyList_Size() 类似,但没有错误检查。

PyObject *PyList_GetItemRef(PyObject *list, Py_ssize_t index)
返回值: 新引用。 自 3.13 版本起成为 稳定ABI 的一部分。

返回 list 所指向的列表中位置 index 处的对象。位置必须是非负的;不支持从列表末尾进行索引。如果 index 超出范围(<0 >=len(list)),则返回 NULL 并设置 IndexError 异常。

在 3.13 版本加入。

PyObject *PyList_GetItem(PyObject *list, Py_ssize_t index)
返回值: 借用引用。 稳定ABI 的一部分。

PyList_GetItemRef() 类似,但返回 借用引用 而不是 强引用

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() 的宏形式,没有错误检查。这通常只用于填充没有先前内容的新列表。

如果 Python 在调试模式启用断言时构建,则会执行边界检查作为断言。

备注

此宏“窃取”对 item 的引用,并且与 PyList_SetItem() 不同,它 丢弃对任何被替换项的引用;list 中位置 i 处的任何引用都将被泄漏。

int PyList_Insert(PyObject *list, Py_ssize_t index, PyObject *item)
作为 稳定 ABI 的一部分。

将项 item 插入列表 listindex 位置之前。成功时返回 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 中包含 lowhigh 之间对象的列表。失败时返回 NULL 并设置异常。类似于 list[low:high]。不支持从列表末尾进行索引。

int PyList_SetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)
作为 稳定 ABI 的一部分。

listlowhigh 之间的切片设置为 itemlist 的内容。类似于 list[low:high] = itemlistitemlist 可以是 NULL,表示分配一个空列表(切片删除)。成功时返回 0,失败时返回 -1。不支持从列表末尾进行索引。

int PyList_Extend(PyObject *list, PyObject *iterable)

使用 iterable 的内容扩展 list。这与 PyList_SetSlice(list, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, iterable) 相同,并类似于 list.extend(iterable)list += iterable

如果 list 不是 list 对象,则引发异常并返回 -1。成功时返回 0。

在 3.13 版本加入。

int PyList_Clear(PyObject *list)

list 中移除所有项。这与 PyList_SetSlice(list, 0, PY_SSIZE_T_MAX, NULL) 相同,并类似于 list.clear()del list[:]

如果 list 不是 list 对象,则引发异常并返回 -1。成功时返回 0。

在 3.13 版本加入。

int PyList_Sort(PyObject *list)
作为 稳定 ABI 的一部分。

就地对 list 的项进行排序。成功时返回 0,失败时返回 -1。这等价于 list.sort()

int PyList_Reverse(PyObject *list)
作为 稳定 ABI 的一部分。

就地反转 list 的项。成功时返回 0,失败时返回 -1。这等价于 list.reverse()

PyObject *PyList_AsTuple(PyObject *list)
返回值: 新引用。 稳定ABI 的一部分。

返回一个新的元组对象,其中包含 list 的内容;等价于 tuple(list)