シーケンス型プロトコル (sequence protocol)

int PySequence_Check(PyObject *o)

オブジェクトがシーケンス型プロトコルを提供している場合は 1 を、そうでない場合は 0 を返します。 __getitem__() メソッドを持つ Python クラスについては、それらが dict のサブクラスでない限り、 1 を返すのに注意してください。そうなる理由は、一般的なケースではオブジェクトがどの種類のキーをサポートしているかを判別するのが不可能だからです。 この関数は常に成功します。

Py_ssize_t PySequence_Size(PyObject *o)
Py_ssize_t PySequence_Length(PyObject *o)

成功するとシーケンス o 中のオブジェクトの数を返し、失敗すると -1 を返します。これは、Python の式 len(o) と同じになります。

PyObject* PySequence_Concat(PyObject *o1, PyObject *o2)
Return value: New reference.

Return the concatenation of o1 and o2 on success, and NULL on failure. This is the equivalent of the Python expression o1 + o2.

PyObject* PySequence_Repeat(PyObject *o, Py_ssize_t count)
Return value: New reference.

Return the result of repeating sequence object o count times, or NULL on failure. This is the equivalent of the Python expression o * count.

PyObject* PySequence_InPlaceConcat(PyObject *o1, PyObject *o2)
Return value: New reference.

Return the concatenation of o1 and o2 on success, and NULL on failure. The operation is done in-place when o1 supports it. This is the equivalent of the Python expression o1 += o2.

PyObject* PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count)
Return value: New reference.

Return the result of repeating sequence object o count times, or NULL on failure. The operation is done in-place when o supports it. This is the equivalent of the Python expression o *= count.

PyObject* PySequence_GetItem(PyObject *o, Py_ssize_t i)
Return value: New reference.

Return the ith element of o, or NULL on failure. This is the equivalent of the Python expression o[i].

PyObject* PySequence_GetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)
Return value: New reference.

Return the slice of sequence object o between i1 and i2, or NULL on failure. This is the equivalent of the Python expression o[i1:i2].

int PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v)

oi 番目の要素に v を代入します。 失敗すると、例外を送出し -1 を返します; 成功すると 0 を返します。 これは Python の文 o[i] = v と同じです。 この関数は v への参照を 盗み取りません

If v is NULL, the element is deleted, however this feature is deprecated in favour of using PySequence_DelItem().

int PySequence_DelItem(PyObject *o, Py_ssize_t i)

oi 番目の要素を削除します。失敗すると -1 を返します。Python の文 del o[i] と同じです。

int PySequence_SetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, PyObject *v)

oi1 から i2 までの間のスライスに v を代入します。Python の文 o[i1:i2] = v と同じです。

int PySequence_DelSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)

シーケンスオブジェクト oi1 から i2 までの間のスライスを削除します。失敗すると -1 を返します。Python の文 del o[i1:i2] と同じです。

Py_ssize_t PySequence_Count(PyObject *o, PyObject *value)

o における value の出現回数、すなわち o[key] == value となる key の個数を返します。失敗すると -1 を返します。Python の式 o.count(value) と同じです。

int PySequence_Contains(PyObject *o, PyObject *value)

ovalue が入っているか判定します。o のある要素が value と等価 (equal) ならば 1 を返し、それ以外の場合には 0 を返します。エラーが発生すると -1 を返します。Python の式 value in o と同じです。

Py_ssize_t PySequence_Index(PyObject *o, PyObject *value)

o[i] == value となる最初に見つかったインデクス i を返します。エラーが発生すると -1 を返します。Python の式 o.index(value) と同じです。

PyObject* PySequence_List(PyObject *o)
Return value: New reference.

Return a list object with the same contents as the sequence or iterable o, or NULL on failure. The returned list is guaranteed to be new. This is equivalent to the Python expression list(o).

PyObject* PySequence_Tuple(PyObject *o)
Return value: New reference.

Return a tuple object with the same contents as the sequence or iterable o, or NULL on failure. If o is a tuple, a new reference will be returned, otherwise a tuple will be constructed with the appropriate contents. This is equivalent to the Python expression tuple(o).

PyObject* PySequence_Fast(PyObject *o, const char *m)
Return value: New reference.

Return the sequence or iterable o as an object usable by the other PySequence_Fast* family of functions. If the object is not a sequence or iterable, raises TypeError with m as the message text. Returns NULL on failure.

PySequence_Fast* ファミリの関数は、oPyTupleObject または PyListObject と仮定し、o のデータフィールドに直接アクセスするため、そのように名付けられています。

CPythonの実装では、もし o が 既にシーケンスかタプルであれば、o そのものを返します。

Py_ssize_t PySequence_Fast_GET_SIZE(PyObject *o)

Returns the length of o, assuming that o was returned by PySequence_Fast() and that o is not NULL. The size can also be gotten by calling PySequence_Size() on o, but PySequence_Fast_GET_SIZE() is faster because it can assume o is a list or tuple.

PyObject* PySequence_Fast_GET_ITEM(PyObject *o, Py_ssize_t i)
Return value: Borrowed reference.

Return the ith element of o, assuming that o was returned by PySequence_Fast(), o is not NULL, and that i is within bounds.

PyObject** PySequence_Fast_ITEMS(PyObject *o)

Return the underlying array of PyObject pointers. Assumes that o was returned by PySequence_Fast() and o is not NULL.

リストのサイズが変更されるとき、メモリ再確保が要素の配列を再配置するかもしれないことに注意してください。そのため、シーケンスの変更が発生しないコンテキストでのみ背後にあるポインタを使ってください。

PyObject* PySequence_ITEM(PyObject *o, Py_ssize_t i)
Return value: New reference.

Return the ith element of o or NULL on failure. Faster form of PySequence_GetItem() but without checking that PySequence_Check() on o is true and without adjustment for negative indices.