如何在Python中相乘兩個列表?


給定的問題陳述要求我們建立一個使用Python相乘兩個列表的演算法。在許多情況下,我們可以使用這種方法,例如資料預處理、組合資訊、縮放值等等。因此,我們將演示完成此類工作的不同方法和演算法。

理解問題

手頭的問題是使用Python計算兩個給定列表的乘積。基本上,我們將得到兩個普通的Python列表,我們必須將第一個列表的項與第二個列表的項相乘。例如,讓我們看看下面的圖片。

上述問題的邏輯

為了解決相乘兩個給定列表的問題,我們需要遍歷兩個列表的各個項,然後將它們彼此相乘。結果將是一個新列表,其中包含兩個列表各項的乘積。還有一些其他方法可以幫助我們相乘兩個列表:使用for迴圈、使用列表推導式和使用numpy庫。

方法1:使用for迴圈

在這種方法中,我們將使用for迴圈來迭代兩個列表的項,並將它們與相應的項相乘。並將相乘的值儲存在名為multiplied_list的單獨列表中。使用for迴圈的時間複雜度為O(n),其中n是列表中存在的項數。

示例

#multiply using for loop
# Initialize the two lists
first_list = [2, 4, 4, 6, 1]
second_list = [8, 2, 5, 7, 3]

# initialize result list
multiplied_list = []
for i1, i2 in zip(first_list, second_list):
   multiplied_list.append(i1*i2)

print("The multiplication of two lists: ", multiplied_list)

輸出

The multiplication of two lists:  [16, 8, 20, 42, 3]

方法2:使用列表推導式

在這種方法中,我們將使用列表推導式。因此,列表推導式是一種方法,我們可以根據給定的列表和給定的條件建立新的列表。在這種方法中,我們還將使用zip函式,這是一種迭代方法,用於迭代列表的項。

使用列表推導式相乘兩個列表的時間複雜度為O(n),其中n是給定列表的大小。因為我們已經將列表的項相乘,並且使用了zip函式,該函式需要n次才能完成任務。

示例

#multiply using list comprehension
# Initialize the two lists
first_list = [12, 14, 14, 16, 21]
second_list = [18, 12, 15, 17, 13]
multiplied_list = [a1 * a2 for a1, a2 in zip(first_list, second_list)]

print("The multiplied list is: ", multiplied_list)

輸出

The multiplied list is:  [216, 168, 210, 272, 273]

方法3:使用numpy

在這種方法中,我們將使用Python的numpy庫。每當我們需要處理陣列時,都可以使用numpy庫。Numpy庫包含一些用於處理陣列的數學函式。因此,我們將使用numpy庫的multiply函式,並將給定列表的每個對應項相乘。使用numpy相乘兩個列表的時間複雜度為O(n),因為第一和第二個列表的大小為n。

示例

#multiply using numpy library

# import the numpy library
import numpy as nmp

# Initialize the two lists
first_list = [11, 12, 13, 14, 15]
second_list = [1, 2, 3, 4, 5]

#multiply two lists using numpy
multiplied_list = nmp.multiply(first_list, second_list)

# printing multiplied list
print("The multiplied list is : " + str(multiplied_list))

輸出

The multiplied list is : [11 24 39 56 75]

結論

因此,這就是我們透過迭代兩個列表的對應項並將它們相乘以獲得結果的方式來逐項相乘兩個列表的方法。我們已經透過不同的方式解決了給定的問題,並且所有方法在時間複雜度方面都是有效的。

更新於:2023年10月16日

1K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告