List Objects

  • 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 版中的新Function。

  • PyObject * PyList_New(Py_ssize_t * len *)
    • 返回值:新参考.

成功返回一个新的长度* len 列表,失败则返回 NULL *。

Note

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

在版本 2.5 中更改:此函数对_size *使用了int。这可能需要更改您的代码以正确支持 64 位系统。

  • Py_ssize_t PyList_Size(PyObject ** list *)
    • 返回* list *中列表对象的长度;这等效于列表对象上的len(list)

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

在版本 2.5 中更改:此宏返回int。这可能需要更改您的代码以正确支持 64 位系统。

  • PyObject * PyList_GetItem(PyObject ** list *,Py_ssize_t * index *)
    • *返回值:借用参考。

返回* list 指向的列表中 index 位置的对象。该职位必须为非负;不支持从列表末尾开始索引。如果 index 超出范围(<0 or > = len(list)),则返回 NULL *并设置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 的项目设置为 item 。成功返回0。如果 index *超出范围,则返回-1并设置IndexError异常。

Note

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

在版本 2.5 中进行了更改:此函数将int用作* index *。这可能需要更改您的代码以正确支持 64 位系统。

  • 无效PyList_SET_ITEM(PyObject **list ,Py_ssize_t * i PyObject o *)
    • PyList_SetItem()宏形式,无错误检查。通常仅用于填写没有先前内容的新列表。

Note

该宏“窃取”对* item *的引用,与PyList_SetItem()不同,它不“不”丢弃对要替换的任何项目的引用; * list 中位置 i *的所有引用都将泄漏。

在版本 2.5 中进行了更改:此宏将int用作* i *。这可能需要更改您的代码以正确支持 64 位系统。

  • int PyList_Insert(PyObject **list ,Py_ssize_t * index PyObject item *)
    • 将* item 项目插入索引 index 前面的列表 list *中。成功返回0;返回-1并设置失败的异常。类似于list.insert(index, item)

在版本 2.5 中进行了更改:此函数将int用作* index *。这可能需要更改您的代码以正确支持 64 位系统。

  • int PyList_Append(PyObject *list PyObject item *)

    • 在列表* list 的末尾附加对象 item *。成功返回0;返回-1并设置失败的异常。类似于list.append(item)
  • PyObject * PyList_GetSlice(PyObject ** list *,Py_ssize_t * low *,Py_ssize_t * high *)

    • 返回值:新参考.

返回* list 中包含 low high 之间的对象的对象列表。返回 NULL *并设置失败的异常。类似于list[low:high]。不支持从列表末尾开始索引。

在版本 2.5 中更改:此函数对** low high *使用了int。这可能需要更改您的代码以正确支持 64 位系统。

  • int PyList_SetSlice(PyObject **list *,Py_ssize_t * low ,Py_ssize_t * high PyObject itemlist *)
    • 将* list low high 之间的切片设置为 itemlist *的内容。类似于list[low:high] = itemlist。 * itemlist 可以是 NULL *,表示分配了一个空列表(切片删除)。成功返回0,失败返回-1。不支持从列表末尾开始索引。

在版本 2.5 中更改:此函数对** low high *使用了int。这可能需要更改您的代码以正确支持 64 位系统。

  • int PyList_Sort(PyObject ** list *)

    • 对* list *的项目进行适当排序。成功返回0,失败返回-1。这等效于list.sort()
  • int PyList_Reverse(PyObject ** list *)

    • 反转* list *的项目。成功返回0,失败返回-1。这等效于list.reverse()
  • PyObject * PyList_AsTuple(PyObject *列表)

    • 返回值:新参考.

返回一个新的 Tuples 对象,其中包含* list *的内容;相当于tuple(list)