列出对象 — Python 文档

来自菜鸟教程
Python/docs/3.7/c-api/list
跳转至:导航、​搜索

列出对象

type PyListObject
PyObject 的这个子类型表示一个 Python 列表对象。
PyTypeObject PyList_Type
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)

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

笔记

如果 len 大于零,则返回的列表对象的项设置为 NULL。 因此,在使用 PyList_SetItem() 将所有项目设置为真实对象之前,您不能使用抽象 API 函数,例如 PySequence_SetItem() 或将对象暴露给 Python 代码。

Py_ssize_t PyList_Size(PyObject *list)
返回list中列表对象的长度; 这相当于列表对象上的 len(list)
Py_ssize_t PyList_GET_SIZE(PyObject *list)
PyList_Size() 的宏形式,没有错误检查。
PyObject *PyList_GetItem(PyObject *list, Py_ssize_t index)
返回 list 指向的列表中位置 index 处的对象。 位置必须是非负数; 不支持从列表末尾开始索引。 如果指数超出范围(<0 或 >=len(list)),返回NULL并设置一个索引错误例外。
PyObject *PyList_GET_ITEM(PyObject *list, Py_ssize_t i)
PyList_GetItem() 的宏形式,没有错误检查。
int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item)

将列表中索引 index 处的项目设置为 item。 成功返回 0。 如果 index 超出范围,则返回 -1 并设置一个 IndexError 异常。

笔记

该函数“窃取”对 item 的引用,并丢弃对受影响位置列表中已有项目的引用。

void PyList_SET_ITEM(PyObject *list, Py_ssize_t i, PyObject *o)

PyList_SetItem() 的宏形式,没有错误检查。 这通常仅用于填充没有以前内容的新列表。

笔记

这个宏“窃取”了对 item 的引用,并且与 PyList_SetItem() 不同,not 丢弃对任何被替换项的引用; list 中位于 i 位置的任何引用都将被泄露。

int PyList_Insert(PyObject *list, Py_ssize_t index, PyObject *item)
将项目item插入到索引index前面的列表list中。 成功返回0; 返回 -1 并在不成功时设置异常。 类似于 list.insert(index, item)
int PyList_Append(PyObject *list, PyObject *item)
将对象 item 附加到列表 list 的末尾。 成功返回0; 返回 -1 并在不成功时设置异常。 类似于 list.append(item)
PyObject *PyList_GetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high)
返回 list 中的对象列表,其中包含 'lowhigh 之间的对象 。 返回 NULL 并在不成功时设置异常。 类似于 list[low:high]。 不支持从列表末尾开始索引。
int PyList_SetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)
lowhigh 之间的 list 切片设置为 itemlist 的内容。 类似于 list[low:high] = itemlistitemlist可以是NULL,表示分配一个空列表(切片删除)。 成功返回 0,失败返回 -1。 不支持从列表末尾开始索引。
int PyList_Sort(PyObject *list)
list 的项目排序到位。 成功返回 0,失败返回 -1。 这相当于 list.sort()
int PyList_Reverse(PyObject *list)
list 的项目反转到位。 成功返回 0,失败返回 -1。 这相当于 list.reverse()
PyObject *PyList_AsTuple(PyObject *list)
返回一个包含 list 内容的新元组对象; 相当于 tuple(list)
int PyList_ClearFreeList()

清除空闲列表。 返回已释放项目的总数。

3.3 版中的新功能。