コンテンツにスキップ

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章「ジェネレータの委譲」