List(串列)物件¶
- PyTypeObjectPyList_Type¶
- 為穩定 ABI 的一部分.
此
PyTypeObject
實例表示 Python 的 list 型別。這與 Python 層中的list
是同一個物件。
- PyObject*PyList_New(Py_ssize_tlen)¶
- 回傳值:新的參照。 為穩定 ABI 的一部分.
成功時回傳長度為len 的新串列,失敗時回傳
NULL
。備註
如果len 大於零,則回傳的串列物件之項目將被設定為
NULL
。因此,在使用PyList_SetItem()
或PyList_SET_ITEM()
來將所有項目設定為一個真實物件前,你無法使用像是PySequence_SetItem()
的抽象 API 函式,也不能將物件暴露 (expose) 給 Python 程式碼。以下 API 在串列完全初始化之前是安全的:PyList_SetItem()
和PyList_SET_ITEM()
。
- Py_ssize_tPyList_Size(PyObject*list)¶
- 為穩定 ABI 的一部分.
回傳list 串列物件的長度;這相當於串列物件的
len(list)
。
- Py_ssize_tPyList_GET_SIZE(PyObject*list)¶
與
PyList_Size()
類似,但沒有錯誤檢查。
- PyObject*PyList_GetItemRef(PyObject*list,Py_ssize_tindex)¶
- 回傳值:新的參照。 為穩定 ABI 的一部分 自 3.13 版本開始.
回傳list 指向的串列中位於index 位置的物件。該位置不可為負數;並不支援從串列尾末開始索引。如果index 超出邊界範圍 (
<0or>=len(list)
) 則回傳NULL
並設定IndexError
例外。在 3.13 版被加入.
- PyObject*PyList_GetItem(PyObject*list,Py_ssize_tindex)¶
- 回傳值:借用參照。 為穩定 ABI 的一部分.
Like
PyList_GetItemRef()
, but returns aborrowed reference instead of astrong reference.
- PyObject*PyList_GET_ITEM(PyObject*list,Py_ssize_ti)¶
- 回傳值:借用參照。
與
PyList_GetItem()
類似,但沒有錯誤檢查。
- intPyList_SetItem(PyObject*list,Py_ssize_tindex,PyObject*item)¶
- 為穩定 ABI 的一部分.
將串列中索引index 處的項目設定為item。成功時回傳
0
。如果index 超出邊界範圍則回傳-1
並設定一個IndexError
例外。備註
此函式「竊取」對item 的參照,並丟棄對串列中受影響位置上已存在項目的參照。
- voidPyList_SET_ITEM(PyObject*list,Py_ssize_ti,PyObject*o)¶
PyList_SetItem()
的巨集形式,沒有錯誤檢查。這通常僅用於填充沒有已存在內容的新串列。Bounds checking is performed as an assertion if Python is built indebug mode or
withassertions
.備註
該巨集「竊取」對item 的參照,並且與
PyList_SetItem()
不同的是,它不會丟棄對任意被替換項目的參照;list 中位置i 的任何參照都將被洩漏 (leak)。
- intPyList_Insert(PyObject*list,Py_ssize_tindex,PyObject*item)¶
- 為穩定 ABI 的一部分.
將項目item 插入串列list 中索引index 的位置之前。如果成功則回傳
0
;如果失敗則回傳-1
並設定例外。類似於list.insert(index,item)
。
- intPyList_Append(PyObject*list,PyObject*item)¶
- 為穩定 ABI 的一部分.
將物件item 附加到串列list 的最後面。如果成功則回傳
0
;如果不成功,則回傳-1
並設定例外。類似於list.append(item)
。
- PyObject*PyList_GetSlice(PyObject*list,Py_ssize_tlow,Py_ssize_thigh)¶
- 回傳值:新的參照。 為穩定 ABI 的一部分.
回傳list 中的物件串列,其中包含low 和high之間的物件。如果沒有成功則回傳
NULL
並設定例外。類似於list[low:high]
。不支援從串列尾末開始索引。
- intPyList_SetSlice(PyObject*list,Py_ssize_tlow,Py_ssize_thigh,PyObject*itemlist)¶
- 為穩定 ABI 的一部分.
將low 和high 之間的list 切片設定為itemlist 的內容。類似於
list[low:high]=itemlist
。itemlist 可能為NULL
,表示分配一個空串列(切片刪除)。成功時回傳0
,失敗時則回傳-1
。不支援從串列尾末開始索引。
- intPyList_Extend(PyObject*list,PyObject*iterable)¶
Extendlist with the contents ofiterable. This is the same as
PyList_SetSlice(list,PY_SSIZE_T_MAX,PY_SSIZE_T_MAX,iterable)
and analogous tolist.extend(iterable)
orlist+=iterable
.Raise an exception and return
-1
iflist is not alist
object. Return 0 on success.在 3.13 版被加入.
- intPyList_Clear(PyObject*list)¶
Remove all items fromlist. This is the same as
PyList_SetSlice(list,0,PY_SSIZE_T_MAX,NULL)
and analogous tolist.clear()
ordellist[:]
.Raise an exception and return
-1
iflist is not alist
object. Return 0 on success.在 3.13 版被加入.
- intPyList_Sort(PyObject*list)¶
- 為穩定 ABI 的一部分.
對list 的項目進行原地 (in place) 排序。成功時回傳
0
,失敗時回傳-1
。這相當於list.sort()
。
- intPyList_Reverse(PyObject*list)¶
- 為穩定 ABI 的一部分.
原地反轉list 的項目。成功時回傳
0
,失敗時回傳-1
。這相當於list.reverse()
。
- PyObject*PyList_AsTuple(PyObject*list)¶
- 回傳值:新的參照。 為穩定 ABI 的一部分.
回傳一個新的 tuple(元組)物件,其中包含list 的內容;相當於
tuple(list)
。