イテレータオブジェクト (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オブジェクトの型オブジェクト。
組み込みのイテレータ型¶
以下は Python の C API に含まれる組み込みのイテレータ型で、追加の関数はありません。 網羅性のために記載しています。
これらのポインタは Stable ABI の一部です。
C の型 |
Python の型 |
|---|---|
|
|
|
|
|
|
|
|
|
その他のイテレータオブジェクト¶
-
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の反復では、範囲の大きさに応じて二つのイテレータ型のどちらかを使います。 ほかの型も、将来予告なく同様の方式を使うようになる可能性があります。