シーケンス型プロトコル (sequence protocol)¶
-
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
を返していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。
-
PyObject*
PySequence_Concat
(PyObject *o1, PyObject *o2)¶ - Return value: New reference.
成功すると o1 と o2 の連結 (concatenation) を返し、失敗すると NULL を返します。Python の式
o1 + o2
と同じです。
-
PyObject*
PySequence_Repeat
(PyObject *o, Py_ssize_t count)¶ - Return value: New reference.
成功するとオブジェクト o の count 回繰り返しを返し、失敗すると NULL を返します。Python の式
o * count
と同じです。バージョン 2.5 で変更: この関数は以前は count の型に
int
を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。
-
PyObject*
PySequence_InPlaceConcat
(PyObject *o1, PyObject *o2)¶ - Return value: New reference.
成功すると o1 と o2 の連結 (concatenation) を返し、失敗すると NULL を返します。o1 が in-place 演算をサポートする場合、in-place 演算を行います。Python の式
o1 += o2
と同じです。
-
PyObject*
PySequence_InPlaceRepeat
(PyObject *o, Py_ssize_t count)¶ - Return value: New reference.
成功するとオブジェクト o の count 回繰り返しを返し、失敗すると NULL を返します。o が in-place 演算をサポートする場合、in-place 演算を行います。Python の式
o *= count
と同じです。バージョン 2.5 で変更: この関数は以前は count の型に
int
を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。
-
PyObject*
PySequence_GetItem
(PyObject *o, Py_ssize_t i)¶ - Return value: New reference.
成功すると o の i 番目の要素を返し、失敗すると NULL を返します。Python の式
o[i]
と同じです。バージョン 2.5 で変更: この関数は以前は i の型に
int
を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。
-
PyObject*
PySequence_GetSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)¶ - Return value: New reference.
成功すると o の i1 から i2 までの間のスライスを返し、失敗すると NULL を返します。Python の式
o[i1:i2]
と同じです。バージョン 2.5 で変更: この関数は以前は i1, i2 の型に
int
を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。
-
int
PySequence_SetItem
(PyObject *o, Py_ssize_t i, PyObject *v)¶ o の i 番目の要素に v を代入します。 失敗すると、例外を送出し
-1
を返します; 成功すると0
を返します。 これは Python の文o[i] = v
と同じです。 この関数は v への参照を 盗み取りません 。v が NULL の場合はその要素が削除されますが、この機能は非推奨であり、
PyObject_DelAttr()
を使うのが望ましいです。バージョン 2.5 で変更: この関数は以前は i の型に
int
を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。
-
int
PySequence_DelItem
(PyObject *o, Py_ssize_t i)¶ o の i 番目の要素を削除します。失敗すると
-1
を返します。Python の文del o[i]
と同じです。バージョン 2.5 で変更: この関数は以前は i の型に
int
を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。
-
int
PySequence_SetSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, PyObject *v)¶ シーケンスオブジェクト o の i1 から i2 までのスライスに、シーケンスオブジェクト v を代入します。 失敗すると例外を送出し
-1
を返します; 成功すると0
を返します。 これは Python の文o[i1:i2] = v
と同じです。v が NULL の場合はスライスは削除されますが、この機能は非推奨であり
PySequence_DelSlice()
を使うのが望ましいです。バージョン 2.5 で変更: この関数は以前は i1, i2 の型に
int
を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。
-
int
PySequence_DelSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)¶ シーケンスオブジェクト o の i1 から i2 までの間のスライスを削除します。失敗すると
-1
を返します。Python の文del o[i1:i2]
と同じです。バージョン 2.5 で変更: この関数は以前は i1, i2 の型に
int
を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。
-
Py_ssize_t
PySequence_Count
(PyObject *o, PyObject *value)¶ o における value の出現回数、すなわち
o[key] == value
となる key の個数を返します。失敗すると-1
を返します。Python の式o.count(value)
と同じです。バージョン 2.5 で変更: この関数は以前は
int
を返していました。この変更により、 64 bit システムを正しくサポートするには修正が必要になります。
-
int
PySequence_Contains
(PyObject *o, PyObject *value)¶ o に value が入っているか判定します。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)
と同じです。バージョン 2.5 で変更: この関数は以前は
int
を返していました。この変更により、 64 bit システムを正しくサポートするには修正が必要になります。
-
PyObject*
PySequence_List
(PyObject *o)¶ - Return value: New reference.
任意のシーケンス o と同じ内容を持つリストオブジェクトを返します。返されるリストは必ず新しいリストオブジェクトになります。
-
PyObject*
PySequence_Tuple
(PyObject *o)¶ - Return value: New reference.
任意のシーケンス o と同じ内容を持つタプルオブジェクトを返します。失敗したら NULL を返します。o がタプルの場合、新たな参照を返します。それ以外の場合、適切な内容が入ったタプルを構築して返します。Pythonの式
tuple(o)
と同じです。
-
PyObject*
PySequence_Fast
(PyObject *o, const char *m)¶ - Return value: New reference.
シーケンス o がすでにタプルやリストであれば o を返し、そうでなければ o をタプルで返します。返されるタプルのメンバにアクセスするには
PySequence_Fast_GET_ITEM()
を使ってください。失敗すると NULL を返します。オブジェクトがシーケンスでなければ、 m がメッセージテキストになっているTypeError
を送出します。
-
PyObject*
PySequence_Fast_GET_ITEM
(PyObject *o, Py_ssize_t i)¶ - Return value: Borrowed reference.
o が NULL でなく、
PySequence_Fast()
が返したオブジェクトであり、かつ i がインデクスの範囲内にあると仮定して、 o の i 番目の要素を返します。バージョン 2.5 で変更: この関数は以前は i の型に
int
を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。
-
PyObject**
PySequence_Fast_ITEMS
(PyObject *o)¶ PyObject ポインタの背後にあるアレイを返します。この関数では、 o は
PySequence_Fast()
の返したオブジェクトであり、 NULL でないものと仮定しています。リストのサイズが変更されるとき、メモリ再確保が要素の配列を再配置するかもしれないことに注意してください。そのため、シーケンスの変更が発生しないコンテキストでのみ背後にあるポインタを使ってください。
バージョン 2.4 で追加.
-
PyObject*
PySequence_ITEM
(PyObject *o, Py_ssize_t i)¶ - Return value: New reference.
成功すると o の i 番目の要素を返し、失敗すると NULL を返します。
PySequence_GetItem()
ですが、 o へのPySequence_Check()
が真になるかチェックせず、負のインデクスに対する調整を行いません。バージョン 2.3 で追加.
バージョン 2.5 で変更: この関数は以前は i の型に
int
を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。
-
Py_ssize_t
PySequence_Fast_GET_SIZE
(PyObject *o)¶ o が NULL でなく、
PySequence_Fast()
が返したオブジェクトであると仮定して、 o の長さを返します。 o のサイズはPySequence_Size()
を呼び出しても得られますが、PySequence_Fast_GET_SIZE()
の方が o をリストかタプルであると仮定して処理するため、より高速です。