次の記事では、Python のジェネレーターとは何かについて学びます。 python ジェネレーター とは何か、pythonプログラミング で ジェネレーター が果たせる役割を理解します。
Python ジェネレーターとは何ですか?
リスト生成を使用すると、リストを直接作成できます。ただし、メモリの制約により、リストの容量には確実に制限があります。さらに、100 万個の要素を含むリストを作成すると、大量の記憶領域が必要になるだけでなく、最初の数要素にアクセスするだけで済む場合、後続の要素のほとんどが占有する領域が無駄になります。 では、リストの要素を特定のアルゴリズムに従って計算できれば、ループ中に後続の要素を継続的に計算できるでしょうか?これにより、完全なリストを作成する必要がなくなり、スペースを大幅に節約できます。 Python では、ループと計算を同時に行うこの仕組みをジェネレーター: ジェネレーターと呼びます。ジェネレーター
を作成するには、さまざまな方法があります。最初の方法は非常に簡単です。リスト生成の [] を () に変更してジェネレーターを作成するだけです:
>>> L = [x * x for x in range(10)] >>> L [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>> g = (x * x for x in range(10)) >>> g <generator object <genexpr> at 0x1022ef630>
def fib(max): n, a, b = 0, 0, 1 while n < max: print(b) a, b = b, a + b n = n + 1 return 'done'
a, b = b, a + b
t = (b, a + b) # t是一个tuplea = t[0]b = t[1]
>>> fib(6)112358'done'
def fib(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1 return 'done'
ジェネレーターを定義する別の方法です。関数定義に yield キーワードが含まれている場合、その関数は通常の関数ではなくジェネレーターになります。
>>> f = fib(6) >>> f<generator object fib at 0x104feaaa0>
ここで、最も理解しにくいのは、ジェネレーターと関数の実行フローが異なることです。関数は順番に実行され、return ステートメントまたは関数ステートメントの最後の行に到達すると戻ります。ジェネレーターとなる関数は next() が呼び出されるたびに実行され、yield ステートメントに遭遇するとリターンし、再度実行されると最後に返された yield ステートメントから実行を継続します。 以上がこの記事の内容です。この記事では主に
pythonのジェネレーターに関する知識を紹介します。上記の内容を理解するために活用していただければ幸いです。この記事で説明したことがあなたのお役に立ち、Python の学習が容易になることを願っています。
関連知識の詳細については、php 中国語 Web サイトの Python チュートリアル 列を参照してください。
以上がPythonのジェネレーターとは何ですか?発電機は何に使われますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。