【Python】2次元リストを1次元リストに変換する4つの方法を解説

、2次元リストは行列や表形式のデータを扱う際に便利ですが、時には1次元リストに変換する必要があります。

この記事では、プログラミング初心者にもわかりやすく、2次元リストを1次元リストに変換する方法を解説します。

目次から探す

Pythonで2次元リストを1次元リストに変換する方法

2次元リストとは、リストの中にリストが入っている形のデータ構造です。

この記事では、Pythonで2次元リストを1次元リストに変換する4つの方法を解説します。

  1. forループを使った方法
  2. リスト内包表記を使った方法
  3. itertoolsモジュールを使った方法
  4. numpyモジュールを使った方法

それでは、それぞれの方法について詳しく見ていきましょう。

forループを使った方法

forループを使って、2次元リストを1次元リストに変換する方法です。

以下にサンプルコードを示します。

# 2次元リスト
two_dim_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# 1次元リストに変換
one_dim_list = []
for inner_list in two_dim_list:
    for item in inner_list:
        one_dim_list.append(item)

print(one_dim_list)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]

このコードでは、まず空の1次元リストone_dim_listを作成しています。

次に、2次元リストtwo_dim_listの各要素(内側のリスト)に対して、forループを使ってアクセスし、さらに内側のリストの各要素に対してもforループを使ってアクセスしています。

そして、内側のリストの各要素をone_dim_listに追加していきます。

リストのappend関数は別の同次元の配列を末尾に結合する関数であるため、2次元リストの要素(1次元配列)をループ処理で追加していけば、簡単に1次元化することが可能です。

リスト内包表記を使った方法

リスト内包表記を使うことでも2次元リストを1次元リストに変換できます。

# 2次元リスト
two_dim_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# 1次元リストに変換
one_dim_list = [item for inner_list in two_dim_list for item in inner_list]

print(one_dim_list)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]

このコードでは、リスト内包表記を使って、2次元リストtwo_dim_listの各要素(内側のリスト)とその要素(内側のリストの各要素)に対してアクセスし、それらを1次元リストone_dim_listに格納しています。

リスト内包表記は理解するまで癖の強い書き方ですが、コード量が少なくなるなどのメリットがある為便利です。

itertoolsモジュールを使った方法

itertoolsモジュールの chain.from_iterable() 関数を使って、2次元リストを1次元リストに変換する方法です。

以下にサンプルコードを示します。

import itertools

# 2次元リスト
two_dim_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# 1次元リストに変換
one_dim_list = list(itertools.chain.from_iterable(two_dim_list))

print(one_dim_list)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]

このコードでは、まずitertoolsモジュールをインポートしています。

次に、 chain.from_iterable() 関数を使って、2次元リストtwo_dim_listを1次元リストに変換し、その結果を list() 関数でリストに変換しています。

numpyモジュールを使った方法

numpyモジュールの numpy.array() 関数と numpy.ndarray.flatten() メソッドを使って、2次元リストを1次元リストに変換する方法です。

import numpy as np

# 2次元リスト
two_dim_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# 1次元リストに変換
one_dim_list = np.array(two_dim_list).flatten().tolist()

print(one_dim_list)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]

このコードでは、まずnumpyモジュールをインポートしています。

事前にNumPyのインストールが必要です。インストールしていないとエラーになるので、エラーが発生した場合はpip install numpyコマンドでインストールしておいてください。

次に、 numpy.array() 関数を使って、2次元リストtwo_dim_listをnumpy配列に変換し、 numpy.ndarray.flatten() メソッドを使って1次元配列に変換しています。

最後に、 numpy.ndarray.tolist() メソッドを使って、1次元リストone_dim_listに変換しています。

以上が、Pythonで2次元リストを1次元リストに変換する主な方法です。

1 2

この記事のページ一覧
  1. 現在のページ
目次から探す