Tech-Joho.info

ネストしたリストをフラット化する

Python独学ならTech-Joho TOP > Python問題集 > ネストしたリストをフラット化する

問題

下のような2重のリストがあります。

data= [[1,2,3], [4,5,6], [7,8,9]]

これを、[1,2,3,4,5,6,7,8,9]のような1重のリストに変換して、printで表示してください。

(チャレンジ1): 1行で書いてください。
(チャレンジ2): importを使わずに、組み込み関数だけで実現してください。
(チャレンジ3): 2重に限らず、何重にネストしていても使える方法にしてください。

下の欄に回答を入力し、「回答完了」を押して下さい!回答例が表示されます。

実行結果の例

この様に表示されます。

[1,2,3,4,5,6,7,8,9]

回答例

例えば、sumを使うと、下のように書くことができます。

 print(sum(data, []))

解説

組み込み関数sumの第2引数を使うと簡単に実現できます。
sumは、第一引数のiterableオブジェクト(リストみたいなやつ)の各要素の合計を計算します。
第2引数は、省略可能な引数で、合計を足す初期値を表します。
もし与えられなければ、0となります。

関数sumの第2引数に空のリスト[]を与えると、[]に第一引数の各要素を足していきます。
そして、リスト同士の和は、その全ての要素を足したリストになります。
下のようなコードを実行してみてください。

これらの機能を使うことで、2重のリストをフラット化することができます。

3重以上にネストしたリストのフラット化については、考えてみてください!

[1, 2, 3] + ["a", "b", "c"]

関数sumの仕様は公式リファレンスに載っています。
Python3 reference/sum
Python3 reference: augmented assignment statements