コンテンツにスキップ

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

[

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という名前を使用します。

各反復では、.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)

実行結果は以下の通りです。

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

この方法を使用すると、matrixのリストがフラット化され、1次元のリストが作成されます。

forループを使用した方法の詳細な解説と実行可能なサンプルコードを提供しました。次に、Pythonの内包表記や標準ライブラリ、組み込みツールを使用したリストのフラット化方法についても紹介します。お楽しみに!