列表对象

typedef PyListObject

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

PyTypeObject PyList_Type
属于 稳定 ABI 的一部分。

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

int PyList_Check(PyObject *p)

如果 p 是列表对象或者列表类型的子类型实例,则返回真。这个函数总是成功。

int PyList_CheckExact(PyObject *p)

如果 p 是列表对象,但不是列表类型的子类型实例,则返回真。这个函数总是成功。

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

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

注意

如果 len 大于零,则返回的列表对象的项被设置为 NULL。因此,在将所有项设置为具有 PyList_SetItem()PyList_SET_ITEM() 的实际对象之前,您不能使用抽象 API 函数,例如 PySequence_SetItem(),或者将对象暴露给 Python 代码。在列表完全初始化之前,以下 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 在调试模式下构建,或者使用了with assertions选项,则会以断言的形式执行边界检查。

注意

这个宏会“窃取”对 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 中位于 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)