列表对象¶
-
PyTypeObject PyList_Type¶
- 属于 稳定 ABI 的一部分。
这个
PyTypeObject
的实例表示 Python 列表类型。它与 Python 层中的list
对象相同。
-
PyObject *PyList_New(Py_ssize_t len)¶
- 返回值:新引用。属于 稳定 ABI 的一部分。
成功时返回一个长度为 len 的新列表,失败时返回
NULL
。注意
如果 len 大于零,则返回的列表对象的项被设置为
NULL
。因此,在将所有项设置为具有PyList_SetItem()
或PyList_SET_ITEM()
的实际对象之前,您不能使用抽象 API 函数,例如PySequence_SetItem()
,或者将对象暴露给 Python 代码。在列表完全初始化之前,以下 API 是安全的:PyList_SetItem()
和PyList_SET_ITEM()
。
-
Py_ssize_t PyList_Size(PyObject *list)¶
- 属于 稳定 ABI 的一部分。
返回列表对象 list 的长度;这等同于列表对象上的
len(list)
。
-
Py_ssize_t PyList_GET_SIZE(PyObject *list)¶
与
PyList_Size()
类似,但没有错误检查。
-
PyObject *PyList_GetItemRef(PyObject *list, Py_ssize_t index)¶
- 返回值:新引用。自 3.13 版本起,属于 稳定 ABI 的一部分。
返回由 list 指向的列表中位置为 index 的对象。位置必须是非负的;不支持从列表末尾开始索引。如果 index 超出范围(
<0 或 >=len(list)
),则返回NULL
并设置一个IndexError
异常。在 3.13 版本中添加。
-
PyObject *PyList_GetItem(PyObject *list, Py_ssize_t index)¶
- 返回值:借用引用。属于 稳定 ABI 的一部分。
与
PyList_GetItemRef()
类似,但返回一个借用引用,而不是强引用。
-
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()
的宏形式,没有错误检查。这通常仅用于填充没有先前内容的新列表。如果 Python 在调试模式下构建,或者使用了
with assertions
选项,则会以断言的形式执行边界检查。注意
这个宏会“窃取”对 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 中位于 low 和 high 之间的对象。如果失败则返回
NULL
并设置一个异常。类似于list[low:high]
。不支持从列表末尾开始索引。
-
int PyList_SetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)¶
- 属于 稳定 ABI 的一部分。
将 list 中 low 和 high 之间的切片设置为 itemlist 的内容。类似于
list[low:high] = itemlist
。itemlist 可以为NULL
,表示赋值为一个空列表(切片删除)。成功时返回0
,失败时返回-1
。不支持从列表末尾开始索引。
-
int PyList_Extend(PyObject *list, PyObject *iterable)¶
使用 iterable 的内容扩展 list。这与
PyList_SetSlice(list, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, iterable)
相同,类似于list.extend(iterable)
或list += iterable
。如果 list 不是
list
对象,则引发异常并返回-1
。成功时返回 0。在 3.13 版本中添加。
-
int PyList_Clear(PyObject *list)¶
从 list 中移除所有项。这与
PyList_SetSlice(list, 0, PY_SSIZE_T_MAX, NULL)
相同,类似于list.clear()
或del list[:]
。如果 list 不是
list
对象,则引发异常并返回-1
。成功时返回 0。在 3.13 版本中添加。