【Python基礎】1次元のリストを2次元のリストに変換する方法

  • URLをコピーしました!
目次

リスト

前回、Pythonの無名関数lambda式(ラムダ式)を紹介しました。

今回は色々やっていた時に必要だった、1次元のリストを2次元のリストに変換する方法を紹介します。

それでは始めていきましょう。

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

まずは単純に1次元のリストから2次元のリストに変換します。

難しいことを考えずにやろうとするととりあえずfor文を使ってやるのが簡単かなと思います。

ということでこんな感じ。

a = [1, 2, 3, 4, 5]

a_new = []
for num in a:
    a_new.append([num])
    
print(a_new)

実行結果
[[1], [2], [3], [4], [5]]

もう少し高度にやろうとするならば、リスト内包表記を使うのがいいでしょう。

a = [1, 2, 3, 4, 5]

a_new = [[num] for num in a]

print(a_new)

実行結果
[[1], [2], [3], [4], [5]]

2次元リストを含んだリストを2次元化する方法

次にほとんどの要素が1次元だけど、少しだけ2次元の要素が入っているリストを全て2次元化する方法です。

つまり「[1, [2], 3, 4, 5]」といったリストを2次元化したいという場合です。

先ほどの方法で2次元化してしまうと、元々2次元だった要素は3次元になってしまいます。

a = [1, [2], 3, 4, 5]

a_new = []
for num in a:
    a_new.append([num])
    
print(a_new)

実行結果
[[1], [[2]], [3], [4], [5]]

この場合、for文で要素を一つずつ取得し、それらがリストかどうか調べ、リストの場合はそのまま、リストではなかった場合はリストにするという処理をすると、全ての要素が2次元化できます。

特定のオブジェクトがリストかどうかを確認するには「type(オブジェクト)」で「list」となるかを確認します。

つまりこんな感じ。

a = [1, [2], 3, 4, 5]

a_new = []
for num in a:
    if type(num) == list:
        a_new.append(num)
    else:
        a_new.append([num])
    
print(a_new)

実行結果
[[1], [2], [3], [4], [5]]

ちなみにリスト内包表記で書いてみるとこんな感じです。

a = [1, [2], 3, 4, 5]

a_new = [num if type(num) == list else [num] for num in a]

print(a_new)

実行結果
[[1], [2], [3], [4], [5]]

次回はmatplotlibでX軸を2つにした場合の目盛りを傾ける方法を紹介します。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次