コンテンツにスキップ

Pythonでリストのフラット化を容易にする方法 (Translation: How to Effortlessly Flatten Lists in Python)

CodeMDD.io

Pythonのリストのフラット化方法

データを扱っているときによくあることは、データがネストされたリストの形で提供されることです。Pythonでは、このデータをフラット化して1次元のリストに変換することが一般的です。リストのフラット化とは、行列などの多次元リストを1次元のリストに変換することを指します。

リストのフラット化がどういうことかをより具体的に理解するために、以下の数値の行列があるとしましょう。

matrix = [
[9, 3, 8, 3],
[4, 5, 2, 8],
[6, 4, 3, 1],
[1, 0, 4, 5],
]

matrixという変数は、4つのネストされたリストを含むPythonのリストを保持しています。各ネストされたリストは行を表しており、各行には4つのアイテムまたは数字が格納されています。この行列を以下のようなリストに変換したいとします。

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

では、この行列をどのようにフラット化し、上記のような1次元のリストを取得することができるでしょうか?このチュートリアルでは、Pythonでそれを行う方法を学びます。

forループを使用してリストのリストをフラット化する方法

Pythonでは、リストのリストをどのようにフラット化することができるでしょうか?一般的に、リストのリストをフラット化するには、以下の手順を明示的にまたは暗黙的に実行することができます。

  1. フラット化されたデータを格納するための新しい空のリストを作成します。
  2. 元のリストのネストされたリストまたはサブリストごとに反復処理を行います。
  3. 現在のサブリストのすべてのアイテムをフラット化されたデータのリストに追加します。
  4. フラット化されたデータで結果のリストを返します

matrixの例を続けるために、forループと.extend()メソッドを使用してこれらの手順をPythonのコードに変換する方法を見てみましょう。

def flatten_extend(matrix):
flat_list = []
for row in matrix:
flat_list.extend(row)
return flat_list

flatten_extend()内では、まずflat_listという新しい空のリストを作成します。このリストは、matrixから抽出したフラット化されたデータを格納するために使用されます。次に、matrixの中の内部またはネストされたリストを反復処理するためのループを開始します。この例では、現在のネストされたリストを表すためにrowという名前を使用しています。

では、以下のコードを実行して、関数が正しく機能するかを確認しましょう。