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_genid_generator()の呼び出しで初期化。

解答

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

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

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

セクション 4.  5
single

single

AIに質問する

expand

AIに質問する

ChatGPT

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

some-alt