Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでリストのリスト(ネストしたリスト)を別のリストで乗算する方法

データ分析の計算では、2つのリスト同士を乗算する必要が生じることがよくあります。本記事では、ネストされたリスト(リストのリストとも呼ばれます)の各要素を、別のリストの対応する要素と掛け合わせる方法を、具体的なコード例とともに解説します。

方法1:forループを使う

このアプローチでは、2つのforループを入れ子にして実装します。外側のループはリスト内のサブリスト(行)を追跡し、内側のループはネストされたリスト内の各要素を順番に処理します。* 演算子を使って、乗算用リストの要素とネストされたリストの対応する要素を掛け合わせ、結果を新しいリストに格納していきます。

コード例

listA = [[2, 11, 5], [3, 2, 8], [11, 9, 8]]

multipliers = [5, 11, 0]

# 元のリスト
print("与えられたリスト: ", listA)

# 乗算用リスト
print("乗算用リスト: ", multipliers)

# ループによる乗算
res = [[] for idx in range(len(listA))]
for i in range(len(listA)):
    for j in range(len(multipliers)):
        res[i] += [multipliers[i] * listA[i][j]]

# 結果の出力
print("乗算結果: ", res)

実行結果

上記のコードを実行すると、次のような出力が得られます。

与えられたリスト: [[2, 11, 5], [3, 2, 8], [11, 9, 8]]
乗算用リスト: [5, 11, 0]
乗算結果: [[10, 55, 25], [33, 22, 88], [0, 0, 0]]

出力を見ると、multipliers[0] の値 5 が最初のサブリスト [2, 11, 5] の全要素に、11 が2番目のサブリストに、0 が3番目のサブリストにそれぞれ適用されていることがわかります。

方法2:enumerateを使う

enumerate 関数を利用すると、ネストされたリストのインデックスと各サブリストを同時に取得できるため、より簡潔なリスト内包表記で乗算処理を書くことができます。ループのネストが減り、コードの可読性も向上します。

コード例

listA = [[2, 11, 5], [3, 2, 8], [11, 9, 8]]

multipliers = [5, 11, 0]

# 元のリスト
print("与えられたリスト: " + str(listA))

# 乗算用リスト
print("乗算用リスト: ", multipliers)

# enumerateを使った乗算
res = [[multipliers[i] * j for j in x]
       for i, x in enumerate(listA)]

# 結果の出力
print("乗算結果: ", res)

実行結果

上記のコードを実行すると、次のような出力が得られます。

与えられたリスト: [[2, 11, 5], [3, 2, 8], [11, 9, 8]]
乗算用リスト: [5, 11, 0]
乗算結果: [[10, 55, 25], [33, 22, 88], [0, 0, 0]]

まとめ

どちらの方法でも同じ結果が得られますが、enumerate を使ったリスト内包表記の方がコードが短く、Pythonらしい書き方と言えます。単純な二重ループは処理の流れが理解しやすく、初心者向けの学習に適しています。用途や可読性の要件に応じて使い分けるとよいでしょう。

  1. Pythonでリストを定義する方法とは?基本の書き方を初心者向けに解説

    リスト(List)は、Pythonにおける基本的なシーケンス型データ構造の一つです。複数の要素を角括弧 [ ] で囲み、カンマで区切って表現します。各要素は文字列や数値など異なるデータ型が混在していても問題ありません。また、リストは順序付き(ordered)コレクションであるため、格納した要素の並び順は保持されます。個々の要素には、0から始まるインデックスを使ってアクセスできます。たとえば最初の要素はインデックス 0、2番目の要素は 1 で参照します。リストの定義例list1 = [physics, chemistry, 1997, 2000] list2 = [1, 2, 3, 4, 5]

  2. Pythonリスト入門:作成から操作、削除まで徹底解説

    このチュートリアルでは、Pythonのリスト(List)について学びます。リストの作成方法、要素へのアクセス、要素の追加・削除、リスト自体の削除など、基本的な操作を一つずつ丁寧に解説していきます。 Pythonでは、リストは角括弧 [] を使って構築し、各要素はカンマ , で区切って記述します。 Pythonのリストは、異なる型のオブジェクトを混在させて格納できるのが特徴です。すべて文字列である必要も、整数である必要もありません。例えば、以下のように複数の型が混ざったリストを作成できます。mixedTypesList = [a, True, 1, 1.0] リストの作成方法 リストは、角括弧