ホームページ >バックエンド開発 >Python チュートリアル >Python ジェネレーターは、反復シーケンス生成に対する Java のアプローチとどのように異なりますか?
Python のジェネレーターを理解する: Java プログラマーの視点
ジェネレーターは、メモリ効率の高い方法でデータを生成する Python の独自の機能です。値のシーケンス。 Java でジェネレータに相当するのはスレッドですが、ジェネレータは従来のコンシューマ/プロデューサー モデルを補完する別個のメカニズムです。
ジェネレータとは何ですか?
ジェネレータはすべての値を一度に返すのではなく、一度に 1 つずつ値を生成する反復可能関数のように動作する関数。これは、次の呼び出しまで関数の実行を一時停止する yield キーワードを使用して実現します。
ジェネレータを使用する理由
ジェネレータにはいくつかの利点があります。
例:
フィボナッチ数を生成する次の Python コードを考えてみましょう:
def fib(): a, b = 0, 1 while True: yield a a, b = b, a + b
このジェネレーター関数は次の結果を生成します。呼び出されるたびにフィボナッチ数が返されます。次のコード スニペットは、ジェネレーターの使用方法を示しています。
import itertools fib_numbers = list(itertools.islice(fib(), 10)) print(fib_numbers)
Java の比較:
Java には、Python ジェネレーターと直接同等のものはありません。ただし、反復ラムダまたはメソッド参照を使用してそれらの動作をシミュレートすることは可能です。たとえば、フィボナッチ数はラムダを使用して Java で生成できます:
public static Stream<Integer> fib() { int a = 0, b = 1; Stream<Integer> stream = Stream.iterate(a, n -> { int tmp = n; n = a + b; a = tmp; return n; }); return stream; }
以上がPython ジェネレーターは、反復シーケンス生成に対する Java のアプローチとどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。