列表对象¶
-
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 是安全的 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 在调试模式或
启用断言
时构建,则会执行边界检查作为断言。备注
此宏“窃取”对 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 版本加入。