あなたが指しているGenerator
のはPythonです。を見てみましょう: -
ドキュメントを参照してください:-Generator Expression
投稿したものとまったく同じ例が含まれています
ドキュメントから:-
ジェネレーターは、イテレーターを作成するためのシンプルで強力なツールです。これらは通常の関数のように記述されていますが、データを返したいときはいつでもyieldステートメントを使用します。next()が呼び出されるたびに、ジェネレーターは中断したところから再開します(すべてのデータ値と最後に実行されたステートメントを記憶します)
ジェネレータは、の代わりにList Comprehension
使用するものと似ていますが、メモリ効率が高くなります。同時に結果の完全なものを返すことはありませんが、ジェネレーターオブジェクトを返します。オブジェクトを呼び出すたびに、ジェネレータは次の値を返すために使用します。square brackets
brackets
list
next()
generator
yield
List Comprehension
上記のコードは次のようになります:-
[x * x for x in range(10)]
forの最後に結果を除外する条件を追加することもできます。
[x * x for x in range(10) if x % 2 != 0]
numbers
数値が2で割り切れない場合、これは1から5の範囲で2を掛けたリストを返します。
Generators
の使用を描写する例は次のyield
とおりです。
def city_generator():
yield("Konstanz")
yield("Zurich")
yield("Schaffhausen")
yield("Stuttgart")
>>> x = city_generator()
>>> x.next()
Konstanz
>>> x.next()
Zurich
>>> x.next()
Schaffhausen
>>> x.next()
Stuttgart
>>> x.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
つまり、へのすべての呼び出しがで次を実行next()
することがわかります。そして最後にそれは投げます。yield()
generator
StopIteration