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

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

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

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

int PySeqIter_Check(PyObject *op)

op の型が PySeqlter_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 は、呼び出されるたびに次の反復処理対象オブジェクトを返さなければなりません。生成されたイテレータは、callablesentinel に等しい値を返すと反復処理を終了します。

Range Objects

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

The type object for range objects.

int PyRange_Check(PyObject *o)

Return true if the object o is an instance of a range object. This function always succeeds.

Builtin Iterator Types

These are built-in iteration types that are included in Python's C API, but provide no additional functions. They are here for completeness.

C type

Python type

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

enumerate

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

filter

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

map

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

reversed

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

zip

Other Iterator Objects

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 より).

Type objects for iterators of various built-in objects.

Do not create instances of these directly; prefer calling PyObject_GetIter() instead.

Note that there is no guarantee that a given built-in type uses a given iterator type. For example, iterating over range will use one of two iterator types depending on the size of the range. Other types may start using a similar scheme in the future, without warning.