0602: yield from で一段だけ平坦化¶
問題¶
整数のイテラブルを要素に持つイテラブル groups を受け取り、内側の整数を順に生成するジェネレータ関数 flatten_once(groups) を実装してください。
平坦化するのは一段だけです。
制約¶
- 返り値はイテレータです。
- 外側と内側のどちらにも、リスト以外のイテラブルが渡されることがあります。
- 空の内側イテラブルは何も生成しません。
- 入力全体をリストに変換する必要はありません。
例¶
>>> list(flatten_once([[1, 2], [], [3]]))
[1, 2, 3]
>>> list(flatten_once((range(n) for n in [0, 2, 3])))
[0, 1, 0, 1, 2]
発展¶
入れ子の深さが不定のデータを再帰的に平坦化する版を書いてください。
参考¶
- 『Python Distilled』第6章「ジェネレータとyield文」
- 『Python Distilled』第6章「ジェネレータの委譲」