イテレータは、可算数の値を含むオブジェクトです。
イテレータは反復可能なオブジェクトです。つまり、すべての値を反復処理できます。
技術的には、Python におけるイテレータは、メソッド iter() および next() を含むイテレータ プロトコルを実装するオブジェクトです。
リスト、タプル、ディクショナリ、セットはすべて反復可能なオブジェクトです。これらはイテレータを取得できる反復可能なコンテナです。
これらすべてのオブジェクトには、イテレータを取得するための iter() メソッドがあります:
Instances
タプルからイテレータを返し、それぞれの値を出力します:
mytuple = ("apple", "banana", "cherry") myit = iter(mytuple) print(next(myit)) print(next(myit)) print(next(myit))
実行中のインスタンス
apple banana cherry
文字列も反復可能なオブジェクトであり、反復子を返すことができます:
インスタンス
文字列も反復可能なオブジェクトです。一連の文字を含む:
mystr = "banana" myit = iter(mystr) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit))
実行中のインスタンス
b a n a n a
for ループを使用して反復可能オブジェクトを走査することもできます:
Instance
タプルの値を反復処理します:
mytuple = ("apple", "banana", "cherry") for x in mytuple: print(x)
インスタンスを実行します
python_iterator_loop_1.py apple banana cherry
インスタンス
文字列内の文字を繰り返します:
mystr = "banana" for x in mystr: print(x)
例を実行します
python_iterator_loop_2.py b a n a n a
ヒント: for ループは実際にイテレータ オブジェクトを作成し、ループごとに next() メソッドを実行します。
オブジェクト/クラスをイテレータとして作成するには、iter() メソッドと next() メソッドを実装する必要があります。オブジェクト。
Python クラス/オブジェクトの章で学習したように、すべてのクラスには init() という関数があり、オブジェクトの作成時に初期化を行うことができます。
iter() メソッドも同様に動作し、操作 (初期化など) を実行できますが、常にイテレータ オブジェクト自体を返す必要があります。
next() メソッドを使用しても操作を実行でき、シーケンス内の次の項目を返す必要があります。
例
1 から始まり、各シーケンスが 1 ずつ増加する数値を返すイテレータを作成します (1、2、3、4、5 などを返します)。 .) :
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): x = self.a self.a += 1 return x myclass = MyNumbers() myiter = iter(myclass) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter))
実行例
python_iterator_create_1.py 1 2 3 4 5
十分な next() ステートメントがある場合、またはそれらを for ループ内で使用している場合、上記の例は永遠に続きます。 。
反復に永遠に時間がかかることを防ぐために、StopIteration ステートメントを使用できます。
next() メソッドでは、反復が指定された回数完了した場合にエラーを発生させる終了条件を追加できます。
Example
20 回の反復後に停止:
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): if self.a <= 20: x = self.a self.a += 1 return x else: raise StopIteration myclass = MyNumbers() myiter = iter(myclass) for x in myiter: print(x)
実行中のインスタンス
python_iterator_create_2.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
以上がPython イテレータとは何か、そしてその使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。