列表物件

型別 PyListObject

PyObject 的子型別表示一個 Python 列表物件。

PyTypeObject PyList_Type
作為 穩定 ABI 的一部分。

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)
返回值: 新引用。 穩定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 插入列表 listindex 位置之前。成功時返回 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 中包含 lowhigh 之間物件的列表。失敗時返回 NULL 並設定異常。類似於 list[low:high]。不支援從列表末尾進行索引。

int PyList_SetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)
作為 穩定 ABI 的一部分。

listlowhigh 之間的切片設定為 itemlist 的內容。類似於 list[low:high] = itemlistitemlist 可以是 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 版本加入。

int PyList_Sort(PyObject *list)
作為 穩定 ABI 的一部分。

就地對 list 的項進行排序。成功時返回 0,失敗時返回 -1。這等價於 list.sort()

int PyList_Reverse(PyObject *list)
作為 穩定 ABI 的一部分。

就地反轉 list 的項。成功時返回 0,失敗時返回 -1。這等價於 list.reverse()

PyObject *PyList_AsTuple(PyObject *list)
返回值: 新引用。 穩定ABI 的一部分。

返回一個新的元組物件,其中包含 list 的內容;等價於 tuple(list)