シーケンスプロトコル
- int PySequence_Check(PyObject *o)
- オブジェクトがシーケンスプロトコルを提供する場合は
1
を返し、それ以外の場合は0
を返します。 dict サブクラスでない限り、__getitem__()
メソッドを持つPythonクラスに対して1
を返すことに注意してください。これは、一般に、サポートするキーのタイプを判別できないためです。 この関数は常に成功します。
- Py_ssize_t PySequence_Size(PyObject *o)
Py_ssize_t PySequence_Length(PyObject *o)
- 成功した場合は o 、失敗した場合は
-1
の順序でオブジェクトの数を返します。 これは、Python式len(o)
と同等です。
- 成功した場合は o1 と o2 の連結を返し、失敗した場合は
NULL
を返します。 これは、Python式o1 + o2
と同等です。
- シーケンスオブジェクト o count 回、または失敗した場合は
NULL
を繰り返した結果を返します。 これは、Python式o * count
と同等です。
- 成功した場合は o1 と o2 の連結を返し、失敗した場合は
NULL
を返します。 o1 がサポートしている場合、操作はインプレースで実行されます。 これは、Python式o1 += o2
と同等です。
- シーケンスオブジェクト o count 回、または失敗した場合は
NULL
を繰り返した結果を返します。 o がサポートしている場合、操作はインプレースで実行されます。 これは、Python式o *= count
と同等です。
- o の i 番目の要素、または失敗した場合は
NULL
を返します。 これは、Python式o[i]
と同等です。
- シーケンスオブジェクト o のスライスを i1 と i2 の間で返すか、失敗した場合は
NULL
を返します。 これは、Python式o[i1:i2]
と同等です。
- int PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v)
オブジェクト v を o の i 番目の要素に割り当てます。 例外を発生させ、失敗した場合は
-1
を返します。 成功すると0
を返します。 これは、Pythonステートメントo[i] = v
と同等です。 この関数は v への参照を盗みません。v が
NULL
の場合、要素は削除されますが、 PySequence_DelItem()を使用するため、この機能は非推奨になりました。
- int PySequence_DelItem(PyObject *o, Py_ssize_t i)
- オブジェクト o の i 番目の要素を削除します。 失敗すると
-1
を返します。 これは、Pythonステートメントdel o[i]
と同等です。
- シーケンスオブジェクト v を i1 から i2 までのシーケンスオブジェクト o のスライスに割り当てます。 これは、Pythonステートメント
o[i1:i2] = v
と同等です。
- int PySequence_DelSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)
- i1 から i2 までのシーケンスオブジェクト o のスライスを削除します。 失敗すると
-1
を返します。 これは、Pythonステートメントdel o[i1:i2]
と同等です。
- o 内の value の出現回数を返します。つまり、
o[key] == value
のキーの数を返します。 失敗した場合は、-1
を返します。 これは、Python式o.count(value)
と同等です。
- o に値が含まれているかどうかを確認します。 o の項目が value と等しい場合は、
1
を返します。それ以外の場合は、0
を返します。 エラーの場合は、-1
を返します。 これは、Python式value in o
と同等です。
o[i] == value
の最初のインデックス i を返します。 エラーの場合は、-1
を返します。 これは、Python式o.index(value)
と同等です。
- 失敗した場合は、シーケンスまたは反復可能な o 、または
NULL
と同じ内容のリストオブジェクトを返します。 返されるリストは新しいものであることが保証されています。 これは、Python式list(o)
と同等です。
- 失敗した場合は、シーケンスと同じ内容または反復可能な o 、または
NULL
のタプルオブジェクトを返します。 o がタプルの場合、新しい参照が返されます。それ以外の場合、タプルは適切な内容で作成されます。 これは、Python式tuple(o)
と同等です。
- PyObject *PySequence_Fast(PyObject *o, const char *m)
シーケンスまたは反復可能な o を、他の
PySequence_Fast*
関数ファミリーで使用可能なオブジェクトとして返します。 オブジェクトがシーケンスまたは反復可能でない場合は、メッセージテキストとして m を指定して TypeError を発生させます。 失敗するとNULL
を返します。PySequence_Fast*
関数は、 o が PyTupleObject または PyListObject であり、 o [のデータフィールドにアクセスすることを前提としているため、このように名前が付けられています。 X160X]直接。CPython実装の詳細として、 o がすでにシーケンスまたはリストである場合は、それが返されます。
- Py_ssize_t PySequence_Fast_GET_SIZE(PyObject *o)
- o が PySequence_Fast()によって返され、 o が
NULL
ではないと仮定して、 o の長さを返します。 。 サイズは、 o で PySequence_Size()を呼び出すことによっても取得できますが、 PySequence_Fast_GET_SIZE()は、 o がリストまたはタプル。
- o が PySequence_Fast()によって返されたと仮定して、 o の i 番目の要素を返します。 o は
NULL
ではなく、 i は範囲内です。
- PyObject **PySequence_Fast_ITEMS(PyObject *o)
PyObjectポインタの基になる配列を返します。 o が PySequence_Fast()によって返され、 o が
NULL
ではないと想定します。リストのサイズが変更されると、再割り当てによってアイテムの配列が再配置される場合があることに注意してください。 したがって、シーケンスを変更できないコンテキストでのみ、基になる配列ポインタを使用してください。
- 失敗した場合は、 o または
NULL
の i 番目の要素を返します。 PySequence_GetItem()のより高速な形式ですが、 o の PySequence_Check()が真であることを確認せず、負のインデックスを調整しません。