広告スペース(バナー)
🐍Python レッスン
基本文法の基礎8
データ構造とオブジェクト指向8
構文の基本を深める9
関数とデータ構造の応用9
アルゴリズムとテストの基礎8
文字列・数値操作の応用8
実務で役立つ機能8
アルゴリズム練習問題10
レッスン 13 / 69

ジェネレータとyield

このレッスンでは、yieldを使ったジェネレータの基本を学び、大量のデータをメモリ効率よく扱う方法を理解することを目標にします。「Python yield ジェネレータ」「Python yield とは」で調べている方向けです。

yieldを使う関数はジェネレータと呼ばれ、値を1つずつ順番に返すことができます。全部の値を一気にメモリに持たなくて済むので、大量のデータを扱うときに便利です。「必要になったときに、必要な分だけ値を作る」という考え方で、通常の関数とは異なる特殊な仕組みを持っています。

サンプルコードでは、count_up_to関数がyield iのたびに処理を一時停止し、呼び出し元に値を1つ返しています。for文でジェネレータをループすると、止まっていた場所から処理が再開され、次のyieldまで進む、という動きを繰り返します。通常のreturnとは全く異なる制御の流れです。

初心者がよくつまずくのが、ジェネレータは1回しか使い切れない点です。一度すべての値を取り出した後、もう一度同じジェネレータをループしても値は出てきません。再度使いたい場合は、ジェネレータ関数をもう一度呼び出して新しいジェネレータを作る必要があります。

巨大なログファイルを1行ずつ読み込む場合など、限られたメモリで大量データを扱いたい実務の場面でよく活用されます。全件をリストとして返す関数と比べ、途中で処理を打ち切りたい場合にも柔軟に対応できる、実用性の高い仕組みです。

Python
OUTPUT / 実行結果

💡 初回実行時はPythonエンジンの読み込みに数秒かかります。

🎯
ここまでできればゴール達成!
大量のデータを1件ずつ効率よく処理する仕組みが作れるようになります。
広告スペース(バナー)
広告スペース(記事内)