ジェネレーター
イテレーターを作成するためのジェネレーターと、その使い方を学びます。
「ジェネレーター」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン2/5です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全5レッスンが含まれています。
ジェネレーター入門
ジェネレーター入門
ジェネレーターは、データを遅延的に反復処理できるPythonの特殊なイテレーターです。すべてのデータを一度に返すのではなく、1項目ずつ生成するため、メモリ効率に優れています。
このレッスンでは、Pythonでジェネレーターを作成して使用する方法を学びます。

ジェネレーターとは
ジェネレーターとは
ジェネレーターは、yieldキーワードを使用して値を1つずつ返す関数です。ジェネレーターのnext()メソッドを呼び出すたびに、最後に値を生成した位置から実行が再開されます。
# Basic generator example
def my_generator():
yield 1
yield 2
yield 3
# Using the generator
gen = my_generator()
print(next(gen)) # Outputs: 1
print(next(gen)) # Outputs: 2
print(next(gen)) # Outputs: 3ジェネレーターの仕組み
ジェネレーターの仕組み
ジェネレーターは関数の状態を保存するため、中断した位置から正確に実行を再開できます。そのためメモリ効率に優れ、大規模なデータセットに適しています。
# Example: Generating a range of numbers
def range_generator(start, end):
while start < end:
yield start
start += 1
for number in range_generator(1, 5):
print(number) # Outputs: 1, 2, 3, 4ジェネレーター式
ジェネレーター式
ジェネレーター式はリスト内包表記に似ていますが、角かっこの代わりに丸かっこを使用します。リストではなくジェネレーターを作成します。
# Generator expression
gen_exp = (x * x for x in range(5))
for value in gen_exp:
print(value) # Outputs: 0, 1, 4, 9, 16ジェネレーターとリストの比較
ジェネレーターとリストの比較
ジェネレーターはすべてのデータをメモリに保存しないため、リストよりもメモリ効率に優れています。代わりに、必要に応じてデータを生成します。
# Comparing lists and generators
# List comprehension
list_comp = [x * x for x in range(1000000)]
# Generator expression
gen_exp = (x * x for x in range(1000000))
# List comprehension uses more memory
print(type(list_comp)) # Outputs: <class 'list'>
print(type(gen_exp)) # Outputs: <class 'generator'>ジェネレーターの使用例
ジェネレーターの使用例
ジェネレーターは、次のような場合に適しています:
- メモリに収まらない大規模なデータセットを処理する。
- 無限シーケンスを生成する。
- データを遅延評価する。
無限ジェネレーター
無限ジェネレーター
ジェネレーターは、数値の終わりのないシーケンスなど、無限シーケンスを生成できます。無限に実行され続けないように、必ずループを停止してください。
# Infinite generator example
def infinite_sequence():
num = 0
while True:
yield num
num += 1
# Using the infinite generator
for i in infinite_sequence():
if i > 5:
break
print(i) # Outputs: 0, 1, 2, 3, 4, 5複数のyieldを持つジェネレーター関数
複数のyieldを持つジェネレーター関数
ジェネレーター関数には複数のyield文を含めることができ、複雑なシーケンスを作成できます:
# Multiple yields in a generator
def multi_yield():
yield "First"
yield "Second"
yield "Third"
for value in multi_yield():
print(value) # Outputs: First, Second, Thirdジェネレーターでよくある間違い
ジェネレーターでよくある間違い
次のような間違いに注意してください:
- ジェネレーター関数で
yieldの代わりにreturnを使用する。 - ループや
next()を使ってジェネレーターを消費しない。 - リストのほうが適している小規模なデータセットにジェネレーターを使用する。
何を学びましたか
何を学びましたか
このレッスンでは、次のことを学びました:
- ジェネレーターとは何か、Pythonでどのように動作するか。
yieldを使ってジェネレーター関数を作成する方法。- ジェネレーターとリストの違い。
- 無限シーケンスや大規模なデータセットなど、ジェネレーターの使用例。
よくできました!次のトピックに進みましょう。

よくある質問
「ジェネレーター」レッスンは無料ですか?
はい。「ジェネレーター」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全5レッスンが含まれています。
「ジェネレーター」で何を学びますか?
イテレーターを作成するためのジェネレーターと、その使い方を学びます。 ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Python Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/5です。
「ジェネレーター」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPython Academyレッスンでコードを書いて実行できますか?
はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。