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

int PySequence_Check(PyObject *o)
オブジェクトがシーケンス型プロトコルを提供している場合に 1 を返し、 そうでないときには 0 を返します。 この関数呼び出しは常に成功します。

Py_ssize_t PySequence_Size(PyObject *o)
成功するとシーケンス o 中のオブジェクトの数を返し、 失敗すると -1 を返します。 シーケンス型プロトコルをサポートしないオブジェクトに対しては、 Python の式 "len(o)" と同じ になります。

Py_ssize_t PySequence_Length(PyObject *o)
PySequence_Size() の別名です。

PyObject* PySequence_Concat(PyObject *o1, PyObject *o2)
戻り値: 新たな参照.
成功するとo1o2 の連結 (concatenation) を返し、 失敗すると NULL を返します。 Python の式 "o1 + o2" と同じです。

PyObject* PySequence_Repeat(PyObject *o, Py_ssize_t count)
戻り値: 新たな参照.
成功するとオブジェクトocount 回繰り返しを返し、 失敗すると NULL を返します。 Python の式 "o * count" と同じです。

PyObject* PySequence_InPlaceConcat(PyObject *o1, PyObject *o2)
戻り値: 新たな参照.
成功するとo1o2 の連結 (concatenation) を返し、 失敗すると NULL を返します。 o1in-place 演算をサポートする場合、in-place 演算を 行います。 Python の式 "o1 += o2" と同じです。

PyObject* PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count)
戻り値: 新たな参照.
成功するとオブジェクトocount 回繰り返しを返し、 失敗すると NULL を返します。 o1in-place 演算をサポートする場合、in-place 演算を 行います。 Python の式 "o *= count" と同じです。

PyObject* PySequence_GetItem(PyObject *o, Py_ssize_t i)
戻り値: 新たな参照.
成功すると oi 番目の要素を返し、 失敗すると NULL を返します。 Python の式 "o[i]" と同じです。

PyObject* PySequence_GetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)
戻り値: 新たな参照.
成功するとoi1 から i2 までの間のスライスを返し、 失敗すると NULL を返します。 Python の式 "o[i1:i2]" と同じです。

int PySequence_SetItem(PyObject *o, int Py_ssize_t, PyObject *v)
oi 番目の要素に v を代入します。 失敗すると -1 を返します。 Python の文 "o[i] = v" と同じです。 この関数は v への参照を盗み取りません

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, int Py_ssize_t, int Py_ssize_t)
シーケンスオブジェクト oi1 から i2 までの間の スライスを削除します。失敗すると -1 を返します。 Python の文 "del o[i1:i2]" と同じです。

int 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" と同じです。

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

PyObject* PySequence_List(PyObject *o)
戻り値: 新たな参照.
任意のシーケンス o と同じ内容を持つリストオブジェクトを返します。 返されるリストは必ず新しいリストオブジェクトになります。

PyObject* PySequence_Tuple(PyObject *o)
戻り値: 新たな参照.
任意のシーケンス o と同じ内容を持つタプルオブジェクトを返します。 失敗したらNULLを返します。 o がタプルの場合、新たな参照を返します。 それ以外の場合、適切な内容が入ったタプルを構築して返します。 Pythonの式 "tuple(o)" と同じです。

PyObject* PySequence_Fast(PyObject *o, const char *m)
戻り値: 新たな参照.
シーケンス o がすでにタプルやリストであれば o を返し、 そうでなければ o をタプルで返します。 返されるタプルのメンバにアクセスするには PySequence_Fast_GET_ITEM() を使ってください。 失敗すると NULL を返します。 オブジェクトがシーケンスでなければ、m がメッセージテキストに なっているTypeError を送出します。

PyObject* PySequence_Fast_GET_ITEM(PyObject *o, Py_ssize_t i)
戻り値: 借りた参照.
oNULLでなく、PySequence_Fast() が返した オブジェクトであり、かつi がインデクスの範囲内にあると 仮定して、oi 番目の要素を返します。

PyObject** PySequence_Fast_ITEMS(PyObject *o)
PyObject ポインタの背後にあるアレイを返します.この関数では,oPySequence_Fast() の返したオブジェクトであり, NULLでないものと仮定しています. バージョン 2.4 で 新たに追加 された仕様です。

PyObject* PySequence_ITEM(PyObject *o, Py_ssize_t i)
戻り値: 新たな参照.
成功すると the ith element of o を返し、 失敗すると NULL を返します。 PySequence_GetItem() ですが、 PySequence_Check(o) が真になるかチェックせず、 負のインデクスに対する調整を行いません。 バージョン 2.3 で 新たに追加 された仕様です。

int PySequence_Fast_GET_SIZE(PyObject *o)
oNULLでなく、PySequence_Fast() が返した オブジェクトであると仮定して、o の長さを返します。 o のサイズはPySequence_Size() を呼び出しても 得られますが、PySequence_Fast_GET_SIZE() の方が o をリストかタプルであると仮定して処理するため、より高速です。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。