列出对象 — Python 文档

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

列出对象

type PyListObject
PyObject 的这个子类型表示一个 Python 列表对象。
PyTypeObject PyList_Type
PyTypeObject 的这个实例表示 Python 列表类型。 这与 Python 层中的 list 是同一个对象。
int PyList_Check(PyObject *p)

如果 p 是列表对象或列表类型的子类型的实例,则返回 true。

在 2.2 版更改:允许接受子类型。

int PyList_CheckExact(PyObject *p)

如果 p 是列表对象,但不是列表类型的子类型的实例,则返回 true。

2.2 版中的新功能。

PyObject *PyList_New(Py_ssize_t len)

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

笔记

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

在 2.5 版更改:此功能使用 int 用于 大小。 这可能需要更改您的代码才能正确支持 64 位系统。

Py_ssize_t PyList_Size(PyObject *list)

返回list中列表对象的长度; 这相当于列表对象上的 len(list)

2.5 版变更:此函数返回 int。 这可能需要更改您的代码才能正确支持 64 位系统。

Py_ssize_t PyList_GET_SIZE(PyObject *list)

PyList_Size() 没有错误检查的宏形式。

2.5 版更改: 该宏返回 int。 这可能需要更改您的代码才能正确支持 64 位系统。

PyObject *PyList_GetItem(PyObject *list, Py_ssize_t index)

返回 list 指向的列表中位置 index 处的对象。 位置必须是非负数; 不支持从列表末尾开始索引。 如果指数超出范围(<0 或 >=len(list)),返回空值并设置一个IndexError例外。

在 2.5 版更改:此函数使用 int 作为 index。 这可能需要更改您的代码才能正确支持 64 位系统。

PyObject *PyList_GET_ITEM(PyObject *list, Py_ssize_t i)

PyList_GetItem() 没有错误检查的宏形式。

2.5 版更改: 该宏使用 int 用于 i。 这可能需要更改您的代码才能正确支持 64 位系统。

int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item)

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

笔记

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

在 2.5 版更改:此函数使用 int 作为 index。 这可能需要更改您的代码才能正确支持 64 位系统。

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

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

笔记

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

2.5 版更改: 该宏使用 int 用于 i。 这可能需要更改您的代码才能正确支持 64 位系统。

int PyList_Insert(PyObject *list, Py_ssize_t index, PyObject *item)

将项插入到索引索引前面的列表列表中。 成功返回0; 返回 -1 并在不成功时设置异常。 类似于 list.insert(index, item)

在 2.5 版更改:此函数使用 int 作为 index。 这可能需要更改您的代码才能正确支持 64 位系统。

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]。 不支持从列表末尾开始索引。

2.5 版更改: 此函数使用 int 用于 lowhigh。 这可能需要更改您的代码才能正确支持 64 位系统。

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。 不支持从列表末尾开始索引。

2.5 版更改: 此函数使用 int 用于 lowhigh。 这可能需要更改您的代码才能正确支持 64 位系统。

int PyList_Sort(PyObject *list)
列表 的项目排序到位。 成功返回 0,失败返回 -1。 这相当于 list.sort()
int PyList_Reverse(PyObject *list)
list 的项目反转到位。 成功返回 0,失败返回 -1。 这相当于 list.reverse()
PyObject *PyList_AsTuple(PyObject *list)
返回一个包含 list 内容的新元组对象; 相当于 tuple(list)