Python ジェネレーター 101
Python は、Python ジェネレーターなどのさまざまな機能を使用して効率的かつ効果的なコーディングを可能にする多用途のプログラミング言語です。Python のジェネレーターは、単一の値ではなく一連の結果を生成する関数です。この値のシーケンスは遅延して作成されます
。つまり、次の値は必要な場合にのみ生成され、前の値は破棄されるため、メモリ効率が高くなります。このブログでは、ジェネレーターの概念、作成方法、Python プログラムでの使用方法について詳しく説明します。
Python ジェネレーターとは何ですか?
Python ジェネレーターは反復可能です。つまり、ループ内で使用できます。ジェネレーターは、return ステートメントの代わりに yield ステートメントを含む関数を使用して作成されます。ジェネレーター関数を呼び出すと、ジェネレーターによって生成された一連の値を反復処理するために使用できるイテレーター オブジェクトが返されます。yield ステートメントは各シーケンス値を作成し、ジェネレーター関数は次の値が要求されるまで一時停止されます。
Python でジェネレーターを作成する
Python でジェネレーターを作成するのは簡単です。必要なのは、ステートメントを含む関数を定義することだけですyield。一連の数値を生成する単純なジェネレーターを作成してみましょう。
def number_sequence(n):
i = 0
while i < n:
yield i
i += 1
for i in number_sequence(5):
print(i)
0 1 2 3 4
Python でのジェネレーターの動作
ジェネレーター関数が呼び出されると、ジェネレーターによって生成された一連の値を反復するために使用できるイテレーター オブジェクトが返されます。このyieldステートメントはシーケンスの各値を生成するために使用され、ジェネレーター関数は次の値が要求されるまで一時停止されます。これがどのように機能するかを見てみましょう。
def number_sequence(n):
i = 0
while i < n:
yield i
i += 1
seq = number_sequence(5)
print(next(seq)) # prints 0
print(next(seq)) # prints 1
print(next(seq)) # prints 2
print(next(seq)) # prints 3
print(next(seq)) # prints 4
Output:
0
1
2
3
4
Python ジェネレーターの例
ジェネレーターの概要とその利点を理解したところで、Python ジェネレーターの例をいくつか見てみましょう。
- フィボナッチ数列ジェネレーター:
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
def file_reader(filename):
with open(filename, 'r') as file:
for line in file:
yield line
3.カウンタジェネレータ:
def counter(start=0, step=1):
n = start
while True:
yield n
n += step
Python ジェネレーターを使用する利点
Python ジェネレーターを使用する利点には、値のシーケンスを生成する他の方法に比べていくつかの利点があります。
- メモリ効率が高い:ジェネレータは値を生成してメモリに保存するのではなく、その場で値を生成するため、メモリ効率が高くなります。
- 効率的な計算:ジェネレーターは必要な値のみを生成するため、計算的にも効率的です。これにより、シーケンスを生成する他の方法よりも高速かつ効率的になります。
- 無限シーケンス:ジェネレーターは、他のシーケンス生成方法では不可能な、無限の値シーケンスを生成することもできます。
- 遅延評価:ジェネレーターは遅延評価を使用します。これは、必要な場合にのみ式を評価することを意味し、リソースを効率的に使用できるようにします。
- イテレータをチェーンする機能:ジェネレータをチェーンして複雑な値のシーケンスを作成できるため、シーケンスを柔軟に生成できます。
- ステートフル:ジェネレーターは呼び出し間の状態を維持するのに役立ち、最小限の労力で複雑なシーケンスを生成できます。
- 定型コードの削減: ジェネレーターは、シーケンス値の生成に必要な定型コードを削減できるため、コードの読み取りと保守が容易になります。
Python ジェネレーターは、一連の値を効率的かつ遅延的に生成できる強力なツールです。ジェネレーターはメモリ効率、計算効率が高く、使いやすいです。これらは無限の取引シーケンスを生成し、連鎖して複雑な取り決めを作成できます。ジェネレーターは Python 言語の中核部分であり、多くの Python ライブラリおよびフレームワークで広く使用されています。コード内でジェネレーターを使用すると、コードが読みやすく保守しやすくなり、Python 的であると見なされます。

![とにかく、リンクリストとは何ですか?[パート1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































