列表物件¶
-
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 版本加入。