シーケンス型プロトコル (sequence protocol)¶
-
int PySequence_Check(PyObject *o)¶
- 次に属します: Stable ABI.
オブジェクトがシーケンス型プロトコルを提供していれば
1、それ以外なら0を返します。 一般に、クラスがどの型のキーをサポートするかは判定できないため、__getitem__()メソッドを持つ Python クラスに対しては、dictのサブクラスでない限り1を返します。 この関数は常に成功します。
-
Py_ssize_t PySequence_Size(PyObject *o)¶
-
Py_ssize_t PySequence_Length(PyObject *o)¶
- 次に属します: Stable ABI.
成功するとシーケンス o 中のオブジェクトの数を返し、失敗すると
-1を返します。これは、Python の式len(o)と同じになります。
-
PyObject *PySequence_Concat(PyObject *o1, PyObject *o2)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
成功すると o1 と o2 の連結 (concatenation) を返し、失敗すると
NULLを返します。Python の式o1 + o2と同じです。
-
PyObject *PySequence_Repeat(PyObject *o, Py_ssize_t count)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
成功するとオブジェクト o の count 回繰り返しを返し、失敗すると
NULLを返します。Python の式o * countと同じです。
-
PyObject *PySequence_InPlaceConcat(PyObject *o1, PyObject *o2)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
成功すると o1 と o2 の連結 (concatenation) を返し、失敗すると
NULLを返します。o1 が in-place 演算をサポートする場合、in-place 演算を行います。Python の式o1 += o2と同じです。
-
PyObject *PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
成功するとオブジェクト o の count 回繰り返しを返し、失敗すると
NULLを返します。o が in-place 演算をサポートする場合、in-place 演算を行います。Python の式o *= countと同じです。
-
PyObject *PySequence_GetItem(PyObject *o, Py_ssize_t i)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
成功すると o の i 番目の要素を返し、失敗すると
NULLを返します。Python の式o[i]と同じです。
-
PyObject *PySequence_GetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
成功すると o の i1 から i2 までの間のスライスを返し、失敗すると
NULLを返します。Python の式o[i1:i2]と同じです。
-
int PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v)¶
- 次に属します: Stable ABI.
o の i 番目の要素にオブジェクト v を代入します。 失敗すると例外を設定して
-1を返し、成功すると0を返します。 Python の文o[i] = vと同じです。 この関数は v への参照を 盗み ません。v が
NULLの場合は要素を削除しますが、この機能は非推奨です。 代わりにPySequence_DelItem()を使ってください。
-
int PySequence_DelItem(PyObject *o, Py_ssize_t i)¶
- 次に属します: Stable ABI.
o の i 番目の要素を削除します。失敗すると
-1を返します。Python の文del o[i]と同じです。
-
int PySequence_SetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, PyObject *v)¶
- 次に属します: Stable ABI.
o の i1 から i2 までの間のスライスに v を代入します。Python の文
o[i1:i2] = vと同じです。
-
int PySequence_DelSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)¶
- 次に属します: Stable ABI.
シーケンスオブジェクト o の i1 から i2 までの間のスライスを削除します。失敗すると
-1を返します。Python の文del o[i1:i2]と同じです。
-
Py_ssize_t PySequence_Count(PyObject *o, PyObject *value)¶
- 次に属します: Stable ABI.
o における value の出現回数、すなわち
o[key] == valueとなる key の個数を返します。失敗すると-1を返します。Python の式o.count(value)と同じです。
-
int PySequence_Contains(PyObject *o, PyObject *value)¶
- 次に属します: Stable ABI.
o に value が入っているか判定します。o のある要素が value と等価 (equal) ならば
1を返し、それ以外の場合には0を返します。エラーが発生すると-1を返します。Python の式value in oと同じです。
-
int PySequence_In(PyObject *o, PyObject *value)¶
- 次に属します: Stable ABI.
PySequence_Contains()の別名です。バージョン 3.14 で ソフト非推奨 <Soft deprecated>: 新しいコードを書く際に、この関数を使わないでください。
-
Py_ssize_t PySequence_Index(PyObject *o, PyObject *value)¶
- 次に属します: Stable ABI.
o[i] == valueとなる最初に見つかったインデクス i を返します。エラーが発生すると-1を返します。Python の式o.index(value)と同じです。
-
PyObject *PySequence_List(PyObject *o)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
シーケンスもしくはイテラブル o と同じ内容を持つリストオブジェクトを返します。 失敗したら
NULLを返します。 返されるリストは新しく作られたことが保証されています。 これは Python の式list(o)と同等です。
-
PyObject *PySequence_Tuple(PyObject *o)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
シーケンスあるいはイテラブルである o と同じ内容を持つタプルオブジェクトを返します。 失敗したら
NULLを返します。o がタプルの場合、新たな参照を返します。 それ以外の場合、適切な内容が入ったタプルを構築して返します。 Pythonの式tuple(o)と同等です。
-
PyObject *PySequence_Fast(PyObject *o, const char *m)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
シーケンスまたはイテラブルの o を
PySequence_Fast*ファミリの関数で利用できるオブジェクトとして返します。オブジェクトがシーケンスでもイテラブルでもない場合は、メッセージ m を持つ、TypeErrorを送出します。失敗したらNULLを返します。PySequence_Fast*ファミリの関数は、o がPyTupleObjectまたはPyListObjectと仮定し、o のデータフィールドに直接アクセスするため、そのように名付けられています。CPythonの実装では、もし o が 既にシーケンスかタプルであれば、o そのものを返します。
-
Py_ssize_t PySequence_Fast_GET_SIZE(PyObject *o)¶
o が
NULLでなく、PySequence_Fast()が返したオブジェクトであると仮定して、 o の長さを返します。 o のサイズはPySequence_Size()を呼び出しても得られますが、PySequence_Fast_GET_SIZE()の方が o をリストかタプルであると仮定して処理するため、より高速です。
-
PyObject *PySequence_Fast_GET_ITEM(PyObject *o, Py_ssize_t i)¶
- 戻り値: 借用参照。
o が
NULLでなく、PySequence_Fast()が返したオブジェクトであり、かつ i がインデクスの範囲内にあると仮定して、 o の i 番目の要素を返します。
-
PyObject **PySequence_Fast_ITEMS(PyObject *o)¶
PyObject ポインタの背後にあるアレイを返します。この関数では、 o は
PySequence_Fast()の返したオブジェクトであり、NULLでないものと仮定しています。リストのサイズが変更されるとき、メモリ再確保が要素の配列を再配置するかもしれないことに注意してください。そのため、シーケンスの変更が発生しないコンテキストでのみ背後にあるポインタを使ってください。
-
PyObject *PySequence_ITEM(PyObject *o, Py_ssize_t i)¶
- 戻り値: 新しい参照。
o の i 番目の要素を返し、失敗すると
NULLを返します。PySequence_GetItem()の高速版であり、PySequence_Check()で o が真を返すかどうかの検証や、負の添え字の調整を行いません。