列表对象

type 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() 将所有项设置为真实对象之前,你不能使用 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 中介于 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_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)