【Python 基礎】ジェネレータとは?わかりやすく使い方を解説

  • URLをコピーしました!

こんにちは、ぽころーです

今回はなんとなくわかるけどわかりづらい

pythonのジェネレータについて紹介します。

目次

ジェネレータとは

generator_image

ジェネレータとは、yield文を使用し、反復可能なオブジェクトを生成する関数です。

ジェネレータには、return文がありません。

その代わりにyield文を使用するのです。

1回目のジェネレータの呼び出しに対して、1回目のyield文の内容を返す動きをします。

言葉では伝わりづらいので、簡単なコードを紹介します。

sample_generator が呼ばれるたびに、1, 2,3 の値を返します。

def sample_generator():
	yield 1
	yield 2
	yield 3

ジェネレータの使い方

ジェネレータがどのようなものかわかったところで、

次は、ジェネレータの使い方を紹介します。

実際のコードは以下の通りです。

my_generator がジェネレータでyield 文を使用し、

あいさつを表示するジェネレータになっています。

ジェネレータの呼び出しには、next関数 を使用します。

def my_generator():
    yield 'おはようございます'
    yield 'こんにちは'
    yield 'こんばんは'


greeting = my_generator()
print(next(greeting))
print(next(greeting))
print(next(greeting))

出力結果

おはようございます
こんにちは
こんばんは

greeting 変数にmy_generator のオブジェクトを格納しています。

そして、next関数によって、yield文の内容をひとつずつ呼び出しています。

自分で、yield文を追加したり、next関数 を増やしたり

試してみてください!

ジェネレータのメリット

ジェネレータの使い方を紹介しましたが、

なぜジェネレータを使用するのか疑問が湧いてくると思います。

なので、ジェネレータのメリットについても紹介します。

ジェネレータのメリットは、以下の2点です。

  • メモリ効率が良い
  • 処理速度が速い

それぞれについて詳しく説明していきます。

メリット1 メモリ効率の良さ

ジェネレータはメモリ効率が良いです。

配列やリストなどは、すべての要素分のメモリを保持します。

一方で、ジェネレータは必要なときに必要な分だけメモリを保持するため、

メモリ効率が良いのです。

for文 などループ文を使用した大規模なデータを扱いやすくできます。

メリット2 処理速度が速い

ジェネレータを使用することで処理速度を高速化させることができます。

メモリ効率と似た理由ですが、ジェネレータは必要分だけを生成するため、

無駄な処理をしなくていいので、その分処理が高速化されます。

まとめ

ジェネレータとは、yield文を使用し、反復可能なオブジェクトを生成する関数です。

ジェネレータを使うことで、効率よくメモリを使用できたり、処理を高速化できたり

メリットがあります。

ジェネレータを使う場面は、そんなに多くないかもしれませんが、使いこなしていきましょう!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

エンジニア。20代。組み込みエンジニアとして働き始めるも、働き方や業務内容に限界を感じ、 AI,Web3エンジニアを目指して勉強中。 エンジニアとして思うことや、学んだことを発信します。

目次