コンテンツにスキップ

Pythonチュートリアル: Pythonでリストをフラット化する方法

CodeMDD.io

Pythonでリストのフラット化

目次

  • forループを使用してリストのフラット化する方法
  • リスト内包表記を使用してリストのフラット化する方法
  • 標準ライブラリと組み込みツールを使用してリストのフラット化する方法
    • itertools.chain()を使用してイテラブルを連結する
    • functools.reduce()を使用してリストを連結する
    • sum()を使用してリストを連結する
  • パフォーマンスを考慮したリストのフラット化
  • NumPyを使用してデータサイエンスのためにPythonリストをフラット化する方法
  • 結論

データを処理する際、リストのリストとしてデータがあることがよくあります。リストのフラット化とは、行列などの多次元リストを一次元のリストに変換する操作のことです。

リストのフラット化とは、次の数値行列を持っていると仮定して説明します。

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]

行列をフラット化し、上記のような一次元リストを取得する方法はありますか?このチュートリアルでは、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という名前を使用します。

各イテレーションで、.extend()を使用して現在のサブリストの内容をflat_listに追加します。このメソッドは、イテラブルを引数に取り、そのアイテムを対象リストの末尾に追加します。

さあ、以下のコードを実行して、関数が正しく動作するか確認してみましょう。

matrix = [
[9, 3, 8, 3],
[4, 5, 2, 8],
[6, 4, 3, 1],
[1, 0, 4, 5],
]
result = flatten_extend(matrix)
print(result)

このコードは、matrixのフラット化されたリストを表示するはずです。

他の方法については、記事を参照してください。