イテレータオブジェクト (iterator object)

Python では二種類のイテレータオブジェクトを提供しています。一つ目はシーケンスイテレータで、 __getitem__() メソッドをサポートする任意のシーケンスを取り扱います。二つ目は呼び出し可能オブジェクトと番兵 (sentinel value) を扱い、シーケンス内の要素ごとに呼び出し可能オブジェクトを呼び出して、センチネル値が返されたときに反復処理を終了します。

PyTypeObject PySeqIter_Type
次に属します: Stable ABI.

PySeqIter_New() や、組み込みシーケンス型に対して 1 引数形式の組み込み関数 iter() を呼び出したときに返される、イテレータオブジェクトの型オブジェクトです。

int PySeqIter_Check(PyObject *op)

op の型が PySeqIter_Type の場合に真を返します。 この関数は常に成功します。

PyObject *PySeqIter_New(PyObject *seq)
戻り値: 新しい参照。 次に属します: Stable ABI.

一般的なシーケンスオブジェクト seq を扱うイテレータを返します。反復処理は、シーケンスが添字指定操作の際に IndexError を返したときに終了します。

PyTypeObject PyCallIter_Type
次に属します: Stable ABI.

PyCallIter_New() や、組み込み関数 iter() の 2 引数形式が返すイテレータオブジェクトの型オブジェクトです。

int PyCallIter_Check(PyObject *op)

op の型が PyCallIter_Type 型の場合に真を返します。この関数は常に成功します。

PyObject *PyCallIter_New(PyObject *callable, PyObject *sentinel)
戻り値: 新しい参照。 次に属します: Stable ABI.

新たなイテレータを返します。最初のパラメタ callable は引数なしで呼び出せる Python の呼び出し可能オブジェクトならなんでもかまいません; callable は、呼び出されるたびに次の反復処理対象オブジェクトを返さなければなりません。生成されたイテレータは、callable が sentinel に等しい値を返すと反復処理を終了します。

range オブジェクト

PyTypeObject PyRange_Type
次に属します: Stable ABI.

range オブジェクトの型オブジェクト。

int PyRange_Check(PyObject *o)

オブジェクト o が range のインスタンスの場合に真を返します。 この関数は常に成功します。

組み込みのイテレータ型

以下は Python の C API に含まれる組み込みのイテレータ型で、追加の関数はありません。 網羅性のために記載しています。

これらのポインタは Stable ABI の一部です。

C の型

Python の型

PyTypeObject PyEnum_Type

enumerate

PyTypeObject PyFilter_Type

filter

PyTypeObject PyMap_Type

map

PyTypeObject PyReversed_Type

reversed

PyTypeObject PyZip_Type

zip

その他のイテレータオブジェクト

PyTypeObject PyByteArrayIter_Type
次に属します: Stable ABI.
PyTypeObject PyBytesIter_Type
次に属します: Stable ABI.
PyTypeObject PyListIter_Type
次に属します: Stable ABI.
PyTypeObject PyListRevIter_Type
次に属します: Stable ABI.
PyTypeObject PySetIter_Type
次に属します: Stable ABI.
PyTypeObject PyTupleIter_Type
次に属します: Stable ABI.
PyTypeObject PyRangeIter_Type
次に属します: Stable ABI.
PyTypeObject PyLongRangeIter_Type
次に属します: Stable ABI.
PyTypeObject PyDictIterKey_Type
次に属します: Stable ABI.
PyTypeObject PyDictRevIterKey_Type
次に属します: Stable ABI (バージョン 3.8 より).
PyTypeObject PyDictIterValue_Type
次に属します: Stable ABI.
PyTypeObject PyDictRevIterValue_Type
次に属します: Stable ABI (バージョン 3.8 より).
PyTypeObject PyDictIterItem_Type
次に属します: Stable ABI.
PyTypeObject PyDictRevIterItem_Type
次に属します: Stable ABI (バージョン 3.8 より).
PyTypeObject PyODictIter_Type

さまざまな組み込みオブジェクトのイテレータの型オブジェクト。

これらのインスタンスを直接作成せず、代わりに PyObject_GetIter() を呼び出してください。

ある組み込み型が特定のイテレータ型を使う保証はありません。 例えば range の反復では、範囲の大きさに応じて二つのイテレータ型のどちらかを使います。 ほかの型も、将来予告なく同様の方式を使うようになる可能性があります。