第6章 ジェネレータ¶
yield による値の生成を確認してから、委譲、コルーチン、スケジューリングへ進みます。
問題一覧¶
- 0600: 累積和ジェネレータ:入力を1つずつ受け取り、その時点までの合計を順に生成します。
- 0601: 固定長に区切るジェネレータ:イテラブルから値を読み取り、指定した個数ごとのタプルを生成します。
- 0602: yield from で一段だけ平坦化:イテラブルのイテラブルを受け取り、内側の値を順に生成します。
- 0603: send で更新する平均値:拡張ジェネレータに値を送り、送るたびに現在の平均を受け取ります。
- 0650: 無限素数ストリーム:上限を決めない増分エラトステネス篩で、素数を無限に生成するジェネレータを実装します。
- 0651: same fringe 問題:入れ子タプルの木を遅延走査し、2つの木の葉の列が等しいかを判定します。
- 0652: オンライン分散のコルーチン:send() で値を受け取るたびに平均と分散を Welford 法で更新する拡張ジェネレータを実装します。
- 0653: ハミング数のマージ:素因数が 2, 3, 5 に限られる数を昇順かつ重複なしで無限に生成します。
- 0654: ラウンドロビン・スケジューラ:ジェネレータをタスクとして登録し deque でラウンドロビン実行する協調的スケジューラを実装します。