序列協議

int PySequence_Check(PyObject *o)
作為 穩定 ABI 的一部分。

如果物件提供序列協議,則返回 1,否則返回 0。請注意,對於具有 __getitem__() 方法的 Python 類,它返回 1,除非它們是 dict 子類,因為通常無法確定該類支援哪種型別的鍵。此函式總是成功的。

Py_ssize_t PySequence_Size(PyObject *o)
Py_ssize_t PySequence_Length(PyObject *o)
作為 穩定 ABI 的一部分。

成功時返回序列 o 中物件的數量,失敗時返回 -1。這等同於 Python 表示式 len(o)

PyObject *PySequence_Concat(PyObject *o1, PyObject *o2)
返回值: 新引用。 穩定ABI 的一部分。

成功時返回 o1o2 的連線,失敗時返回 NULL。這等同於 Python 表示式 o1 + o2

PyObject *PySequence_Repeat(PyObject *o, Py_ssize_t count)
返回值: 新引用。 穩定ABI 的一部分。

返回序列物件 o 重複 count 次的結果,失敗時返回 NULL。這等同於 Python 表示式 o * count

PyObject *PySequence_InPlaceConcat(PyObject *o1, PyObject *o2)
返回值: 新引用。 穩定ABI 的一部分。

成功時返回 o1o2 的連線,失敗時返回 NULL。當 o1 支援時,此操作是 原地 完成的。這等同於 Python 表示式 o1 += o2

PyObject *PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count)
返回值: 新引用。 穩定ABI 的一部分。

返回序列物件 o 重複 count 次的結果,失敗時返回 NULL。當 o 支援時,此操作是 原地 完成的。這等同於 Python 表示式 o *= count

PyObject *PySequence_GetItem(PyObject *o, Py_ssize_t i)
返回值: 新引用。 穩定ABI 的一部分。

返回 o 的第 i 個元素,失敗時返回 NULL。這等同於 Python 表示式 o[i]

PyObject *PySequence_GetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)
返回值: 新引用。 穩定ABI 的一部分。

返回序列物件 oi1i2 之間的切片,失敗時返回 NULL。這等同於 Python 表示式 o[i1:i2]

int PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v)
作為 穩定 ABI 的一部分。

將物件 v 賦值給 o 的第 i 個元素。失敗時引發異常並返回 -1;成功時返回 0。這等同於 Python 語句 o[i] = v。此函式 竊取 v 的引用。

如果 vNULL,則刪除該元素,但此功能已被棄用,建議使用 PySequence_DelItem()

int PySequence_DelItem(PyObject *o, Py_ssize_t i)
作為 穩定 ABI 的一部分。

刪除物件 o 的第 i 個元素。失敗時返回 -1。這等同於 Python 語句 del o[i]

int PySequence_SetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, PyObject *v)
作為 穩定 ABI 的一部分。

將序列物件 v 賦值給序列物件 o 中從 i1i2 的切片。這等同於 Python 語句 o[i1:i2] = v

int PySequence_DelSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)
作為 穩定 ABI 的一部分。

刪除序列物件 o 中從 i1i2 的切片。失敗時返回 -1。這等同於 Python 語句 del o[i1:i2]

Py_ssize_t PySequence_Count(PyObject *o, PyObject *value)
作為 穩定 ABI 的一部分。

返回 valueo 中出現的次數,即返回 o[key] == value 的鍵的數量。失敗時返回 -1。這等同於 Python 表示式 o.count(value)

int PySequence_Contains(PyObject *o, PyObject *value)
作為 穩定 ABI 的一部分。

確定 o 是否包含 value。如果 o 中的某項等於 value,則返回 1,否則返回 0。出錯時返回 -1。這等同於 Python 表示式 value in o

int PySequence_In(PyObject *o, PyObject *value)
作為 穩定 ABI 的一部分。

PySequence_Contains() 的別名。

自 3.14 版本棄用: 此函式已 軟棄用,不應再用於編寫新程式碼。

Py_ssize_t PySequence_Index(PyObject *o, PyObject *value)
作為 穩定 ABI 的一部分。

返回第一個索引 i,使得 o[i] == value。出錯時返回 -1。這等同於 Python 表示式 o.index(value)

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

返回一個列表物件,其內容與序列或可迭代物件 o 相同,失敗時返回 NULL。返回的列表保證是新的。這等同於 Python 表示式 list(o)

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

返回一個元組物件,其內容與序列或可迭代物件 o 相同,失敗時返回 NULL。如果 o 是元組,則返回一個新的引用,否則將構造一個具有適當內容的元組。這等同於 Python 表示式 tuple(o)

PyObject *PySequence_Fast(PyObject *o, const char *m)
返回值: 新引用。 穩定ABI 的一部分。

將序列或可迭代物件 o 返回為一個可供其他 PySequence_Fast* 系列函式使用的物件。如果物件不是序列或可迭代物件,則會引發 TypeError,並以 m 作為訊息文字。失敗時返回 NULL

PySequence_Fast* 函式之所以這樣命名,是因為它們假定 oPyTupleObjectPyListObject,並直接訪問 o 的資料欄位。

作為 CPython 實現細節,如果 o 已經是序列或列表,則會返回它。

Py_ssize_t PySequence_Fast_GET_SIZE(PyObject *o)

返回 o 的長度,假設 o 是由 PySequence_Fast() 返回的且 o 不為 NULL。長度也可以透過在 o 上呼叫 PySequence_Size() 來獲取,但 PySequence_Fast_GET_SIZE() 更快,因為它假定 o 是一個列表或元組。

PyObject *PySequence_Fast_GET_ITEM(PyObject *o, Py_ssize_t i)
返回值:借用引用。

返回 o 的第 i 個元素,假設 o 是由 PySequence_Fast() 返回的,o 不為 NULL,且 i 在邊界內。

PyObject **PySequence_Fast_ITEMS(PyObject *o)

返回 PyObject 指標的底層陣列。假設 o 是由 PySequence_Fast() 返回的且 o 不為 NULL

請注意,如果列表大小調整,重新分配可能會重新定位 items 陣列。因此,僅在序列不能更改的上下文中才使用底層陣列指標。

PyObject *PySequence_ITEM(PyObject *o, Py_ssize_t i)
返回值:新引用。

返回 o 的第 i 個元素,失敗時返回 NULL。這是 PySequence_GetItem() 的更快形式,但不檢查 PySequence_Check()o 上是否為 True,並且不對負索引進行調整。