List Objects

  • 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

Note

如果* 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 *)

  • PyObject * PyList_GetItem(PyObject ** list *,Py_ssize_t * index *)

    • *返回值:借用参考。

返回* list 指向的列表中 index 位置的对象。该职位必须为非负;不支持从列表末尾开始索引。如果 index *超出范围(<0 or > = len(list)),则返回NULL并设置IndexErrorexception。

  • 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异常。

Note

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

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

Note

该宏“窃取”对* item 的引用,与PyList_SetItem()不同,它不不*放弃对要替换的任何项目的引用; * 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 *)

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

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

  • int PyList_ClearFreeList()
    • 清除空闲列表。返回释放的项目总数。

版本 3.3 中的新Function。