反復可能 - 反復可能オブジェクト
オブジェクトは、そのメンバーの各項目の隣に戻すことができます。含みます:
- 順序付きタイプリスト、STR、タプル
- 無秩序型のdict、セット
- __iter__のいずれかの定義、オブジェクト__next__クラス。
反復可能オブジェクトをするために使用することができ for
、サイクルや他の多くの場所は、(のシーケンスを必要としzip()
、map()
...)。
ときイテレータオブジェクトパラメータは、組み込み関数に渡されたとして、それはオブジェクトのためのイテレータを返します。これは、使い捨てのイテレータトラバーサル値セットに適用されます。 iter()
例:
>>> = [1、2 、なし] >>> [ 1、2 、なし] >>> ITER() <0x106a28f10でlist_iteratorオブジェクト>
for文に自動的にイテレータが反復可能である作成されます。運転サイクルの間。
イテレータ - イテレータ
一連のオブジェクトは、データストリームを表すために使用されます。繰り返し呼び出しイテレータ __next__()
法(またはそれが組み込み関数に渡す next()
)リターン・ストリームの1つのエントリずつ。
ほとんどのコンテナオブジェクトは、forループを使用することができます。
これは、ループ内で使用するために、機構の背後にあるITER()イテレータオブジェクトがコンテナオブジェクトである生成します。出力する__next __()コンテナオブジェクト内の一つのデータのいずれかを使用して、このオブジェクト。
データ型--iteratorタイプ
コンテナオブジェクトのサポート反復を提供します。
容器。__iter __()
イテレータオブジェクトを返します。これは、2つのメソッドがあります。
- イテレータ.__ ITER __():用と文で交配のためのリターンそのもの。
- イテレータ.__次__():コンテナの項目から次の項目を返します。
Pythonは配列型のリスト、STR、タプル、辞書の辞書、および繰り返しの他の特別な形のために、いくつかのイテレータオブジェクトを定義します。
データ型--generatorタイプ
ジェネレータは、イテレータを達成するための簡単な方法を提供します。
方法:
用途は内部的に得られることを関数を定義し、この関数である発電機。
それが作成されるオブジェクトと、それは発電機のイテレータです。イテレータジェネレータ。
DEF 逆(データ) のためのインデックスで範囲(LEN(データ)-1、-1、-1 ): 収量データ[インデックス] >>> ためチャーで逆(' ゴルフ' ) ... プリント(CHAR) ... のF L O G
ジェネレータ式:
もっと簡単な方法を定義するジェネレータ。
>>> G =(X * X のためのx における範囲(10 )) >>> G <ジェネレータオブジェクト<genexpr>で0x1022ef630> >>> 次の(G) 0 >>> 次の(G) 1
次の各呼び出しは、サイクルタイムです。
例としては、定義された繰り返しオブジェクトクラスを生成証明します:
#linshi.pyの クラスリバース: "" " 配列後方をループするためのイテレータ。""" DEF __init__ (自己、データ): self.data = データ self.index = LEN(データ) DEF __iter__ (自己): 戻りセルフ DEF __next__ (自己): 場合 self.index == 0: 昇給を呼び出すとStopIteration self.index = self.index - 1 戻りself.data [self.index]
その後:
>>> インポートlinshi.py >>> インポートlinshi >>> REV = linshi.Reverse(' スパム' ) >>> REV <linshi.Reverse 0x107c01430におけるオブジェクト> >>> から collections.abc インポートのIterable >>> でisinstance (REV、反復処理可能) トゥルー
これは、オブジェクトクラス定義のrevが反復オブジェクトであることを示しています。