、2次元リストは行列や表形式のデータを扱う際に便利ですが、時には1次元リストに変換する必要があります。
この記事では、プログラミング初心者にもわかりやすく、2次元リストを1次元リストに変換する方法を解説します。
Pythonで2次元リストを1次元リストに変換する方法
2次元リストとは、リストの中にリストが入っている形のデータ構造です。
この記事では、Pythonで2次元リストを1次元リストに変換する4つの方法を解説します。
- forループを使った方法
- リスト内包表記を使った方法
- itertoolsモジュールを使った方法
- 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次元リストに変換する主な方法です。