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