Python で 2つのリストを乗算する

Muhammad Waiz Khan 2023年1月30日
  1. Python で zip() メソッドを使って 2つのリストを乗算する
  2. Python で numpy.multiply() メソッドを用いて 2つのリストを乗算する
  3. 関数 map() を用いた Python での 2つのリストの乗算する
Python で 2つのリストを乗算する

このチュートリアルでは、Python で 2つのリストの要素ごとの乗算を実行するための様々な方法をデモします。同じ次元の整数のリストが 2つあり、最初のリストの要素と 2 番目のリストの同じ位置にある要素を掛け合わせて、同じ次元のリストを得たいとします。

Python で zip() メソッドを使って 2つのリストを乗算する

Python の組み込みの zip() メソッドは 1つ以上の反復可能量を受け取り、その反復可能量をタプルに集約します。リスト [1,2,3][4,5,6][(1, 4), (2, 5), (3, 6)] になります。map() メソッドを用いて両方のリストに要素単位でアクセスし、リスト内包メソッドを用いて必要なリストを取得します。

以下のコード例は、zip() を用いて 1 次元と 2 次元のリストをリスト内包を用いて多重化する方法を示しています。

list1 = [2, 4, 5, 3, 5, 4]
list2 = [4, 1, 2, 9, 7, 5]
product = [x * y for x, y in zip(list1, list2)]
print(product)

出力:

[8, 4, 10, 27, 35, 20]

2 次元リストの乗算:

list1 = [[2, 4, 5], [3, 5, 4]]
list2 = [[4, 1, 2], [9, 7, 5]]
product = [[0] * 3] * 2

for x in range(len(list1)):
    product[x] = [a * b for a, b in zip(list1[x], list2[x])]

print(product)

出力:

[[8, 4, 10], [27, 35, 20]]

Python で numpy.multiply() メソッドを用いて 2つのリストを乗算する

Python の NumPy ライブラリの multiply() メソッドは、2つの配列/リストを入力として受け取り、要素ごとの乗算を行った後に配列/リストを返します。このメソッドは 2 次元乗算のために余分な作業をする必要がないので簡単ですが、このメソッドのマイナス点は NumPy ライブラリがないと利用できないことです。

以下のコード例は、numpy.multiply() メソッドを用いて Python で 1 次元と 2 次元のリストを乗算する方法を示しています。

  • 1 次元の乗算:
import numpy as np

list1 = [12, 3, 1, 2, 3, 1]
list2 = [13, 2, 3, 5, 3, 4]

product = np.multiply(list1, list2)
print(product)

出力:

[156   6   3  10   9   4]
  • 2 次元の乗算:
import numpy as np

list1 = [[12, 3, 1], [2, 3, 1]]
list2 = [[13, 2, 3], [5, 3, 4]]

product = np.multiply(list1, list2)
print(product)

出力:

[[156   6   3]
 [ 10   9   4]]

関数 map() を用いた Python での 2つのリストの乗算する

関数 map は関数と 1つ以上のイテレータブルを入力として受け取り、入力されたリストに関数を適用したイテレータブルを返します。

Python では、map() 関数を用いて 2つのリストを引数として渡すことで、2つのリストの 1 次元と 2 次元の要素毎の乗算を行うことができます。以下のコード例は、map() を用いて 2つの Python リストを乗算する方法を示しています。

1 次元乗算のコード:

list1 = [2, 4, 5, 3, 5, 4]
list2 = [4, 1, 2, 9, 7, 5]
product = list(map(lambda x, y: x * y, list1, list2))
print(product)

出力:

[8, 4, 10, 27, 35, 20]

2 次元乗算のコード:

list1 = [[2, 4, 5], [3, 5, 4]]
list2 = [[4, 1, 2], [9, 7, 5]]
product = [[0] * 3] * 2

for x in range(len(list1)):
    product[x] = list(map(lambda a, b: a * b, list1[x], list2[x]))

print(product)

出力:

[[8, 4, 10], [27, 35, 20]]

関連記事 - Python List