列表物件

typedef PyListObject

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

PyTypeObject PyList_Type
屬於 穩定 ABI 的一部分。

這個 PyTypeObject 的例項表示 Python 列表型別。它與 Python 層中的 list 物件相同。

int PyList_Check(PyObject *p)

如果 p 是列表物件或者列表型別的子型別例項,則返回真。這個函式總是成功。

int PyList_CheckExact(PyObject *p)

如果 p 是列表物件,但不是列表型別的子型別例項,則返回真。這個函式總是成功。

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 中位於 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)