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

single

無限ジェネレーター

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

yield はジェネレーターを一時停止し、次の next() 呼び出しで再開することを思い出してください。これまでに見てきたジェネレーターには明確な終了点がありました。しかし、ジェネレーターは 無限ループ と組み合わせることで特に強力になります。値を無限に生成し、メモリに保存することなく処理できます。

while True を使った無限ジェネレーター

ジェネレーター内で while True ループを使用すると、無限シーケンス を作成できます。これはリストとして保存することが不可能なものです。ジェネレーターは next() が呼び出されたときだけ次の値を生成します。

1234567891011
def counter(): count = 1 while True: # Runs forever yield count # Return current value and pause count += 1 # Resume from here on the next call gen = counter() print(next(gen)) # 1 print(next(gen)) # 2 print(next(gen)) # 3

next() を何回呼び出しても、ジェネレーターは常に新しい値を用意します。先読みや値のメモリ保存は行いません。

無限ジェネレーターの制御

ジェネレーターは永遠に動作するため、取得する値の数を制御する必要があります。最も一般的な方法は、for を使った range() ループです。

12345678910
def counter(): count = 1 while True: yield count count += 1 gen = counter() for _ in range(5): print(next(gen)) # 1, 2, 3, 4, 5
Note
注意

停止条件なしで無限ジェネレーターを通常の for ループで反復処理しないこと。プログラムが永久に実行され、クラッシュする原因となる。

タスク

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

無限ジェネレーター関数を使用して、一意のユーザーIDを生成します。id_generator() 関数は 'ID_1''ID_2' などの識別子継続的に生成します。

  1. 識別子が1から始まるため、変数 count値 1で初期化します。
  2. 無限while ループを使用して、識別子を継続的に生成します。
  3. yield を使い、f'ID_{count}' の形式で現在の識別子返します
  4. 各イテレーションの後に count を1ずつ増加させます。
  5. id_gen を呼び出して、ジェネレーターオブジェクト id_generator() を初期化します。

解答

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

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

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

セクション 4.  5
single

single

AIに質問する

expand

AIに質問する

ChatGPT

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

some-alt