シーケンスプロトコル—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/c-api/sequence
移動先:案内検索

シーケンスプロトコル

int PySequence_Check(PyObject *o)
オブジェクトがシーケンスプロトコルを提供する場合は1を返し、それ以外の場合は0を返します。 この関数は常に成功します。
Py_ssize_t PySequence_Size(PyObject *o)

Py_ssize_t PySequence_Length(PyObject *o)

成功した場合は o 、失敗した場合は-1の順序でオブジェクトの数を返します。 これは、Python式len(o)と同等です。

バージョン2.5で変更:これらの関数はintタイプを返しました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

PyObject *PySequence_Concat(PyObject *o1, PyObject *o2)
成功した場合は o1o2 の連結を返し、失敗した場合は NULL を返します。 これは、Python式o1 + o2と同等です。
PyObject *PySequence_Repeat(PyObject *o, Py_ssize_t count)

シーケンスオブジェクト o count 回、または失敗した場合は NULL を繰り返した結果を返します。 これは、Python式o * countと同等です。

バージョン2.5で変更:この関数は、カウントintタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

PyObject *PySequence_InPlaceConcat(PyObject *o1, PyObject *o2)
成功した場合は o1o2 の連結を返し、失敗した場合は NULL を返します。 o1 がサポートしている場合、操作はインプレースで実行されます。 これは、Python式o1 += o2と同等です。
PyObject *PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count)

シーケンスオブジェクト o count 回、または失敗した場合は NULL を繰り返した結果を返します。 o がサポートしている場合、操作はインプレースで実行されます。 これは、Python式o *= countと同等です。

バージョン2.5で変更:この関数は、カウントintタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

PyObject *PySequence_GetItem(PyObject *o, Py_ssize_t i)

oi 番目の要素を返すか、失敗した場合は NULL を返します。 これは、Python式o[i]と同等です。

バージョン2.5で変更:この関数は、 iintタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

PyObject *PySequence_GetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)

シーケンスオブジェクト o のスライスを i1i2 の間で返すか、失敗した場合は NULL を返します。 これは、Python式o[i1:i2]と同等です。

バージョン2.5で変更:この関数は、 i1 および i2intタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

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

オブジェクト voi 番目の要素に割り当てます。 例外を発生させ、失敗した場合は-1を返します。 成功すると0を返します。 これは、Pythonステートメントo[i] = vと同等です。 この関数v への参照を盗みません

vNULL の場合、要素は削除されますが、 PySequence_DelItem()を使用するため、この機能は非推奨になりました。

バージョン2.5で変更:この関数は、 iintタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

int PySequence_DelItem(PyObject *o, Py_ssize_t i)

オブジェクト oi 番目の要素を削除します。 失敗すると-1を返します。 これは、Pythonステートメントdel o[i]と同等です。

バージョン2.5で変更:この関数は、 iintタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

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

シーケンスオブジェクト vi1 から i2 までのシーケンスオブジェクト o のスライスに割り当てます。 例外を発生させ、失敗した場合は-1を返します。 成功すると0を返します。 これは、Pythonステートメントo[i1:i2] = vと同等です。

vNULL の場合、スライスは削除されますが、 PySequence_DelSlice()を使用するため、この機能は非推奨になりました。

バージョン2.5で変更:この関数は、 i1 および i2intタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

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

i1 から i2 までのシーケンスオブジェクト o のスライスを削除します。 失敗すると-1を返します。 これは、Pythonステートメントdel o[i1:i2]と同等です。

バージョン2.5で変更:この関数は、 i1 および i2intタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

Py_ssize_t PySequence_Count(PyObject *o, PyObject *value)

o 内の value の出現回数を返します。つまり、o[key] == valueのキーの数を返します。 失敗した場合は、-1を返します。 これは、Python式o.count(value)と同等です。

バージョン2.5で変更:この関数はintタイプを返しました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

int PySequence_Contains(PyObject *o, PyObject *value)
oが含まれているかどうかを確認します。 o の項目が value と等しい場合は、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)と同等です。

バージョン2.5で変更:この関数はintタイプを返しました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

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 が返されます。 PySequence_Fast_GET_ITEM()を使用して、結果のメンバーにアクセスします。 失敗すると NULL を返します。 オブジェクトがシーケンスでない場合は、メッセージテキストとして m を指定してTypeErrorを発生させます。
PyObject *PySequence_Fast_GET_ITEM(PyObject *o, Py_ssize_t i)

oPySequence_Fast()によって返されたと仮定して、 oi 番目の要素を返します。 oNULL ではなく、 i は範囲内です。

バージョン2.5で変更:この関数は、 iintタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

PyObject **PySequence_Fast_ITEMS(PyObject *o)

PyObjectポインタの基になる配列を返します。 oPySequence_Fast()によって返され、 oNULL ではないと想定します。

リストのサイズが変更されると、再割り当てによってアイテムの配列が再配置される場合があることに注意してください。 したがって、シーケンスを変更できないコンテキストでのみ、基になる配列ポインタを使用してください。

バージョン2.4の新機能。

PyObject *PySequence_ITEM(PyObject *o, Py_ssize_t i)

失敗した場合は、 o または NULLi 番目の要素を返します。 PySequence_GetItem()のマクロ形式ですが、 oPySequence_Check()が真であることを確認せず、負のインデックスを調整しません。

バージョン2.3の新機能。

バージョン2.5で変更:この関数は、 iintタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

Py_ssize_t PySequence_Fast_GET_SIZE(PyObject *o)
oPySequence_Fast()によって返され、 oNULL でない場合、 o の長さを返します。 ]。 サイズは、 oPySequence_Size()を呼び出すことでも取得できますが、 PySequence_Fast_GET_SIZE()は、 o がリストまたはタプル。