如何在 Python 中乘法列表:7 種快速方法

如何在 Python 中乘法列表:7 種快速方法

Python 中的列表相乘是執行數學計算或解決數據操作問題時的常見操作。有多種方法可以完成此任務,具體取決於您的要求和可用的庫。

要在 Python 中乘以列表,您可以使用 for 循環、列表理解、zip 和 map 函數,或內置的 functools 模塊。您還可以使用 NumPy 等外部 Python 庫中的函數。

本文將向您展示多種不同的列表相乘方法,每種方法都帶有一個代碼示例和解釋的結果。

讓我們開始吧!

目錄

Python 中的 2 種數字列表乘法

在我們深入研究具體方法之前,您應該了解它們實現的列表乘法類型。

Python 有幾個不同的概念,它們屬於列表乘法的廣義術語。這包括複製列表或實現列表中元素的笛卡爾積。

本文重點介紹列表中元素的兩種算術乘法:

  1. 按值乘法

  2. 逐元素乘法

讓我們快速瀏覽一下這兩個概念。

1.乘以價值

當您有一個整數列表時,您可能希望將每個元素乘以一個特定值。例如,您有一個列表 [1, 2, 3] 並且您希望將每個元素乘以值 3。

您可以嘗試(錯誤地)在這段代碼中使用乘法運算符:

list1 = [1, 2, 3]
result = list1 * 3

您可能會驚訝於結果是 [1, 2, 3, 1, 2, 3, 1, 2, 3]。這稱為列表複製

2. 逐元素列表乘法

假設您有兩個列表:[1, 2, 3] 和 [4, 5, 6]

您想要將列表中同一索引處的元素相乘以生成 [4, 10, 18] 作為結果。

如果您嘗試使用“*”運算符將兩個Python 列表相乘,則會出現錯誤:

類型錯誤:無法將序列乘以“列表”類型的非整數

這是因為乘法運算符的設計目的不是像處理整數或浮點數那樣處理列表。相反,乘法列表需要一種稱為逐元素乘法的運算。

逐元素乘法將兩個列表中的相應元素配對並將它們相乘,形成一個新列表。

現在你明白了這兩個概念。讓我們通過一系列技術來獲得正確的結果。

如何在 Python 中對多個列表元素使用 For 循環

如何在 Python 中乘法列表:7 種快速方法

假設您要將列表元素乘以一個值。對於這種方法,您可以使用for 循環遍曆元素並將每個元素乘以第二個值。

這是一個列表的示例。結果變量保存輸出列表。

list1 = [1, 2, 3, 4]
factor = 3
result = []

for element in list1:
    result.append(element * factor)

在這種情況下,結果列表將為 [3, 6, 9, 12]。

如何使用列表推導式進行乘法

列表理解提供了一種簡潔的方法來執行列表乘法的數字類型。您會得到與使用for循環相同的結果,但語法更緊湊。

這是前面使用列表理解的示例:

list1 = [1, 2, 3, 4]
factor = 3
result = [element * factor for element in list1]

此代碼產生與之前相同的輸出:[3, 6, 9, 12]。

如何使用 Zip 函數進行逐元素乘法

如何在 Python 中乘法列表:7 種快速方法

如果您有兩個整數列表,您可能希望按元素乘以列表。這意味著您將第一個列表中的第一個元素乘以第二個列表中的第一個元素,依此類推與相同位置的元素。

當您將zip ()函數與列表理解結合使用時,它可以實現此目的。

該函數結合了兩個輸入列表的元素,允許您並行循環它們。下面是一個使用相同大小的列表的示例:

list1 = [1, 2, 3, 4]
list2 = [2, 3, 4, 5]
result = [a * b for a, b in zip(list1, list2)]

在這種情況下,結果變量將保存結果列表:[4, 10, 18]。

使用元組和構造函數

有時,您可能不得不使用包含元組而不是簡單整數的列表。

要將兩個元組列表相乘,您可以使用以下組合:

  • zip() 函數

  • 元組構造函數

  • 列表理解

這是一個例子:

list1 = [(1, 2), (3, 4)]
list2 = [(5, 6), (7, 8)]

result = [tuple(a * b for a, b in zip(t1, t2)) for t1, t2 in zip(list1, list2)]

這是結果:[(5, 12), (21, 32)]。

如何在 Python 中使用映射和 Lambda 函數

如何在 Python 中乘法列表:7 種快速方法

Python 中的 map 函數是一種將函數應用於可迭代對象(如列表)中的每個項目的便捷方法。

Python 中的 lambda 函數是一個小的匿名函數。這意味著它是一個沒有名字的函數。

要按元素相乘兩個列表,您可以結合使用 map 和 lambda 函數:

list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = list(map(lambda x, y: x * y, list1, list2))

結果變量將保存相乘列表:[4, 10, 18]。

如何在 Python 中使用運算符模塊

operator 模塊提供了大量有用的函數來處理不同的數據結構和類型。

當您將operator.mul ()函數與 map 函數結合使用時,該函數可用於乘以整數列表。

import operator

list1 = [1, 2, 3]
list2 = [4, 5, 6]

result = list(map(operator.mul, list1, list2))

在此示例中,您導入運算符模塊並使用mul()函數以及 Python 的內置 map()函數來將兩個列表的每個元素相乘。

結果變量將保存相乘列表:[4, 10, 18]。

NumPy 庫:數組和乘法函數

如何在 Python 中乘法列表:7 種快速方法

NumPy庫是 Python 中一個功能強大的外部庫,廣泛用於數值計算和處理數組該庫在處理大型數組或多維數組時特別有效。

要使用 NumPy,您可以使用 pip 安裝它:

pip install numpy

要使用 NumPy 在兩個列表中執行逐元素乘法,請遵循以下一般步驟:

  1. 使用numpy.array()將每個列表轉換為 NumPy 數組。

  2. 使用 NumPy 乘法函數執行乘法。

  3. 或者,使用tolist()方法將結果轉換回 Python 列表

這是一個代碼示例:

import numpy as np

list1 = [1, 2, 3]
list2 = [4, 5, 6]
arr1 = np.array(list1)
arr2 = np.array(list2)

res_arr = np.multiply(arr1, arr2)
result = res_arr.tolist()

這將返回與前面示例相同的結果:[4, 10, 18]。

如何在 Python 中結合 Functools 和 NumPy

functools庫包含一個 reduce 函數該函數將特定函數累積應用於列表中的項目,將列表縮減為單個值。

要使用reduce()函數將兩個列表相乘,您可以將它與 NumPy 庫中的乘法函數結合使用。

這是一個例子:

from functools import reduce
import numpy as np

list1 = [1, 2, 3]
list2 = [4, 5, 6]

result = reduce(np.multiply, [list1, list2])

此代碼導入必要的庫並使用reduce()函數和numpy.multiply()執行兩個列表的逐元素乘法。

在 Python 中使用列表和其他數據結構

數據分析的大多數方面都需要使用列表、集合和其他數據結構。例如,在使用插值處理缺失數據時,您將運用所學知識。

觀看此視頻了解一些高級技術:

最後的想法

您已經學習了在 Python 中以算術方式將列表相乘的各種方法。有些只使用內置模塊和功能,而另一些則依賴第三方庫。

執行逐元素乘法的能力打開了無數應用程序的大門。從數據分析到機器學習,這些操作是許多算法和計算任務的重要組成部分。

雖然本文重點介紹乘法,但您學到的概念也擴展到其他運算。元素方面的加法、減法和除法也可以以大致相同的方式完成。

請記住,鞏固這些概念的最佳方法是應用它們——所以繼續吧,啟動你的 Python 環境並開始試驗。無論您是自動執行任務、處理數據還是構建複雜的軟件,這些技術無疑都會派上用場。

快樂的Python!


什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

如何在 R 中保存和加載 RDS 文件

如何在 R 中保存和加載 RDS 文件

您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。

回顧前 N 個工作日——DAX 編碼語言解決方案

回顧前 N 個工作日——DAX 編碼語言解決方案

在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。

DAX Studio 中數據緩存的物化想法

DAX Studio 中數據緩存的物化想法

本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。

使用 LuckyTemplates 進行業務報告

使用 LuckyTemplates 進行業務報告

如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的