Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ ジェネレーター関数 | 関数の戻り値の指定
Python関数チュートリアル
セクション 4.  4
single

single

ジェネレーター関数

メニューを表示するにはスワイプしてください

Note
定義

ジェネレーター関数は、yield の代わりに return キーワードを使用して値のシーケンスを生成する特別な種類の関数。ジェネレーター関数を呼び出すと、イテレーターオブジェクトが返され、1つずつ値を取り出しながら反復処理が可能。

ジェネレーター関数の主な利点は、メモリ効率の高さ。シーケンス全体を事前に生成してメモリに保存するのではなく、必要に応じて値をその場で生成する。

yield の動作

return とは異なり、yield は関数の実行を一時停止し、その状態を保存する。次に next() が呼び出されると、ジェネレーターは中断した場所から正確に再開される。

12345678910
def count_up(start, stop): while start <= stop: yield start # Pause and return the current value start += 1 # Resume from here on the next call counter = count_up(1, 3) print(next(counter)) # 1 print(next(counter)) # 2 print(next(counter)) # 3

for ループを使ってジェネレーターを反復処理することも可能。for ループは自動的に next() を呼び出し、ジェネレーターが尽きるまで繰り返す。

1234567
def count_up(start, stop): while start <= stop: yield start start += 1 for value in count_up(1, 5): print(value) # 1, 2, 3, 4, 5
Note
注意

ジェネレーターが使い尽くされる(これ以上 yield する値がない)と、next() を呼び出すと StopIteration エラーが発生します。for ループはこれを自動的に処理します。

タスク

スワイプしてコーディングを開始

指定した範囲内の偶数を生成するeven_numbersジェネレーター関数を実装します。

  1. パラメータeven_numbersstartを受け取るstop関数を定義します。
  2. whileループを使用し、startstop以下である間繰り返します。
  3. yieldが偶数の場合、startを使ってstartを返します。
  4. 各イテレーション後にstartを1ずつ増やします。
  5. forループで生成された値をすべて出力します。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  4
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt