用 Python 將兩個列表相乘
Muhammad Waiz Khan
2023年1月30日
2021年2月7日
本教程將演示在 Python 中執行兩個列表元素相乘的各種方法。假設我們有兩個維度相同的整數列表,我們想將第一個列表中的元素與第二個列表中相同位置的元素相乘,得到一個維度相同的結果列表。
在 Python 中使用 zip()
方法將兩個列表相乘
在 Python 中內建的 zip()
方法接受一個或多個可迭代物件並將可迭代物件聚合成一個元組。像列表 [1,2,3]
和 [4,5,6]
將變成 [(1, 4), (2, 5), (3, 6)]
。使用 map()
方法,我們按元素訪問兩個列表,並使用列表推導方法得到所需的列表。
下面的程式碼示例展示瞭如何使用 zip()
與列表推導式來複用 1D 和 2D 列表。
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]
2D 列表的乘法:
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()
方法對兩個列表進行乘法
Python 中 NumPy
庫的 multiply()
方法,將兩個陣列/列表作為輸入,進行元素乘法後返回一個陣列/列表。這個方法很直接,因為我們不需要為二維乘法做任何額外的工作,但是這個方法的缺點是沒有 NumPy
庫就不能使用。
下面的程式碼示例演示瞭如何在 Python 中使用 numpy.multiply()
方法對 1D 和 2D 列表進行乘法。
- 1D 乘法:
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]
- 2D 乘法:
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]]
在 Python 中使用 map()
函式將兩個列表相乘
map
函式接收一個函式和一個或多個迭代數作為輸入,並返回一個迭代數,將所提供的函式應用於輸入列表。
我們可以在 Python 中使用 map()
函式,通過將兩個列表作為引數傳遞給 map()
函式,對兩個列表進行 1D 和 2D 元素乘法。下面的程式碼示例演示了我們如何使用 map()
對兩個 Python 列表進行乘法。
一維乘法的示例程式碼:
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]
2D 乘法的示例程式碼:
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]]