列表物件¶
-
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 版本中新增。