目次
リスト
前回、Pythonの無名関数lambda式(ラムダ式)を紹介しました。
【Python基礎】無名関数lambda式(ラムダ式)
lambda 前回、Pythonのnumpyで行列計算を行う方法を紹介しました。 今回は無名関数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つにした場合の目盛りを傾ける方法を紹介します。
ではでは今回はこんな感じで。
コメント