列表對象?

PyListObject?

這個C類型 PyObject 的子類型代表一個Python列表對象。

PyTypeObject PyList_Type?

這是個屬于 PyTypeObject 的代表Python列表類型的實例。在Python層面和類型 list 是同一個對象。

int PyList_Check(PyObject?*p)?

如果 p 是一個列表對象或者是一個列表類型的子類型實例時,返回真。

int PyList_CheckExact(PyObject?*p)?

當(dāng) p 是一個列表對象,但是不是列表類型的子類型實例時,返回真。

PyObject* PyList_New(Py_ssize_t?len)?
Return value: New reference.

成功時返回一個長度為 len 的新列表,失敗時返回 NULL

注解

當(dāng) len 大于零時,被返回的列表對象項目被設(shè)成 NULL。因此你不能用類似C函數(shù) PySequence_SetItem() 的抽象API或者用C函數(shù) PyList_SetItem() 將所有項目設(shè)置成真實對象前對Python代碼公開這個對象。

Py_ssize_t PyList_Size(PyObject?*list)?

返回 list 中列表對象的長度;這等于在列表對象調(diào)用 len(list)

Py_ssize_t PyList_GET_SIZE(PyObject?*list)?

宏版本的C函數(shù) PyList_Size() ,沒有錯誤檢測。

PyObject* PyList_GetItem(PyObject?*list, Py_ssize_t?index)?
Return value: Borrowed reference.

返回 list 所指向列表中 index 位置上的對象。 位置值必須為非負(fù)數(shù);不支持從列表末尾進(jìn)行索引。 如果 index 超出邊界 (<0 or >=len(list)),則返回 NULL 并設(shè)置 IndexError 異常。

PyObject* PyList_GET_ITEM(PyObject?*list, Py_ssize_t?i)?
Return value: Borrowed reference.

宏版本的C函數(shù) PyList_GetItem() ,沒有錯誤檢測。

int PyList_SetItem(PyObject?*list, Py_ssize_t?index, PyObject?*item)?

將列表中索引為 index 的項設(shè)為 item。 成功時返回 0。 如果 index 超出范圍則返回 -1 并設(shè)定 IndexError 異常。

注解

此函數(shù)會“偷走”一個對 item 的引用并丟棄一個對列表中受影響位置上的已有條目的引用。

void PyList_SET_ITEM(PyObject?*list, Py_ssize_t?i, PyObject?*o)?

不帶錯誤檢測的宏版本 PyList_SetItem()。 這通常只被用于新列表中之前沒有內(nèi)容的位置進(jìn)行填充。

注解

該宏會“偷走”一個對 item 的引用,但與 PyList_SetItem() 不同的是它 不會 丟棄對任何被替換條目的引用;在 listi 位置上的任何引用都將被泄露。

int PyList_Insert(PyObject?*list, Py_ssize_t?index, PyObject?*item)?

將條目 item 插入到列表 list 索引號 index 之前的位置。 如果成功將返回 0;如果不成功則返回 -1 并設(shè)置一個異常。 相當(dāng)于 list.insert(index, item)

int PyList_Append(PyObject?*list, PyObject?*item)?

將對象 item 添加到列表 list 的末尾。 如果成功將返回 0;如果不成功則返回 -1 并設(shè)置一個異常。 相當(dāng)于 list.append(item)

PyObject* PyList_GetSlice(PyObject?*list, Py_ssize_t?low, Py_ssize_t?high)?
Return value: New reference.

返回一個對象列表,包含 list 當(dāng)中位于 lowhigh 之間 的對象。 如果不成功則返回 NULL 并設(shè)置異常。 相當(dāng)于 list[low:high]。 不支持從列表末尾進(jìn)行索引。

int PyList_SetSlice(PyObject?*list, Py_ssize_t?low, Py_ssize_t?high, PyObject?*itemlist)?

list 當(dāng)中 lowhigh 之間的切片設(shè)為 itemlist 的內(nèi)容。 相當(dāng)于 list[low:high] = itemlistitemlist 可以為 NULL,表示賦值為一個空列表(刪除切片)。 成功時返回 0,失敗時返回 -1。 這里不支持從列表末尾進(jìn)行索引。

int PyList_Sort(PyObject?*list)?

list 中的條目進(jìn)行原地排序。 成功時返回 0,失敗時返回 -1。 這等價于 list.sort()

int PyList_Reverse(PyObject?*list)?

list 中的條目進(jìn)行原地反轉(zhuǎn)。 成功時返回 0,失敗時返回 -1。 這等價于 list.reverse()

PyObject* PyList_AsTuple(PyObject?*list)?
Return value: New reference.

返回一個新的元組對象,其中包含 list 的內(nèi)容;等價于 tuple(list)

int PyList_ClearFreeList()?

清空釋放列表。 返回所釋放的條目數(shù)。

3.3 新版功能.