TECH I.S.

Pythonイテレータ


Pythonイテレータ

イテレータは、数えられる数の値を含むオブジェクトです。

イテレータは反復可能なオブジェクトであり、すべての値を横断できることを意味します。

技術的には、Pythonでは、イテレータはメソッド__iter__()__next__()で構成されるイテレータプロトコルを実装するオブジェクトです。


イテレータとイテラブル

リスト、タプル、辞書、セットはすべて反復可能なオブジェクトです。これらは反復子を取得できる反復可能な*コンテナー*です。

これらすべてのオブジェクトには、反復子を取得するために使用されるiter()メソッドがあります。

タプルから反復子を返し、各値を出力します。

mytuple = ("りんご", "バナナ", "さくらんぼ") myit = iter(mytuple) print(next(myit)) print(next(myit)) print(next(myit))

文字列も反復可能なオブジェクトであり、反復子を返すことができます。

文字列も反復可能なオブジェクトであり、一連の文字が含まれます。

mystr = "バナナ" myit = iter(mystr) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit))


イテレータのループ

forループを使用して、反復可能なオブジェクトを反復処理することもできます。

タプルの値を反復します。

mytuple = ("りんご", "バナナ", "さくらんぼ") for x in mytuple: print(x)

文字列の文字を反復します。

mystr = "バナナ" for x in mystr: print(x)

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__():     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))


StopIteration

十分なnext()ステートメントがある場合、またはforループで使用されている場合、上記の例は永久に継続します。

反復が永久に続かないようにするには、StopIterationステートメントを使用します。

next()メソッドでは、反復が指定された回数行われた場合にエラーを発生させる終了条件を追加できます。

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)




プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細