在 Python 中用標量乘以列表
- 使用 Python 中的列表推導將列表元素乘以標量
-
使用 Python 中的
map()
函式將列表元素乘以標量 - 在 Python 中使用 Lambda 函式將列表元素乘以標量
- 在 Python 中使用 Numpy 陣列將列表元素乘以標量
本教程將討論如何在 Python 中將所有列表元素與標量倍數相乘。
使用 Python 中的列表推導將列表元素乘以標量
列表推導式是一種無需在 Python 中使用 for
迴圈即可對每個列表元素執行操作的方法。列表推導優於迴圈,因為它們具有更快的執行時間和更少的程式碼。
下面的程式碼片段展示瞭如何在 Python 中將所有列表元素與一個標量與列表推導相乘。
li = [1, 2, 3, 4]
multiple = 2.5
li = [x * multiple for x in li]
print(li)
輸出:
[2.5, 5.0, 7.5, 10.0]
在上面的例子中,我們使用列表推導 [x*multiple for x in li]
將列表 li
與標量 multiple
相乘。將列表中的每個元素相乘後,輸出中會顯示 li
與 2.5
。
使用 Python 中的 map()
函式將列表元素乘以標量
map()
函式 用於在特定迭代的每個元素上應用使用者定義的函式。map()
函式將方法名稱和可迭代物件作為輸入引數,並將該方法應用於可迭代物件的每個元素。
我們首先必須定義一個只對一個元素執行乘法的方法才能使用這種方法。然後,此方法將通過 map()
函式迭代地應用於列表的每個元素。
map()
函式為每個元素返回一個地圖物件,並使用 Python 中的 list()
函式轉換為列表。
下面的程式碼片段展示了我們如何使用 map()
函式和使用者定義的方法來將所有列表元素與 Python 中的標量相乘。
li = [1, 2, 3, 4]
multiple = 2.5
def multiply(le):
return le * multiple
li = list(map(multiply, li))
print(li)
輸出:
[2.5, 5.0, 7.5, 10.0]
我們首先定義了方法 multiply(le)
,它將單個列表元素 le
作為輸入引數,將它與標量 multiple
相乘,然後返回結果。然後我們使用 map(multiply, li)
函式將 multiply()
應用於列表 li
的所有元素。
map()
函式包含在 list()
函式中,將 map()
函式返回的結果轉換為列表。最後,將列表 li
的每個元素乘以 2.5
後的結果將顯示在輸出中。
在 Python 中使用 Lambda 函式將列表元素乘以標量
Python 中的 Lambda 函式是匿名的單行函式,我們只需要在整個程式碼中使用一次。匿名是指這些函式沒有名稱。
我們可以在 Python 中使用 lambda 關鍵字 指定這些函式。我們可以在前面討論的 map()
函式中使用這些 lambda 函式,將它們應用於每個列表元素。
下面的程式碼片段展示了我們如何在 map()
函式中使用 lambda 函式將每個列表元素乘以 Python 中的標量。
li = [1, 2, 3, 4]
multiple = 2.5
li = list(map(lambda x: x * multiple, li))
print(li)
輸出:
[2.5, 5.0, 7.5, 10.0]
我們指定了一個 lambda 函式,它將某個可迭代的每個元素與標量 multiple
相乘,並使用 map()
函式將其應用於列表 li
。我們將 map()
函式返回的值轉換為 Python 中的 list()
方法。
最後,將列表 li
的每個元素乘以 2.5
後的結果將顯示在輸出中。
與之前的方法相比,此方法要優越得多,因為我們可能不需要在程式碼中的其他任何地方使用此函式。當我們只需要在程式碼中使用一次 Lambda 函式時,它比傳統函式更可取。
在 Python 中使用 Numpy 陣列將列表元素乘以標量
前面討論的所有方法都在 Python 中對列表執行操作。當列表很小時,這些方法效果很好。
使用這些方法的唯一缺點是列表操作通常比 NumPy 陣列慢。
在這種方法中,我們首先將列表轉換為 numpy 陣列,將該陣列與標量相乘,然後使用 NumPy 陣列的 tolist()
函式 將結果陣列轉換回列表。
當列表大小很大並且需要大量計算時,這種方法更可取。
以下程式碼片段演示了此方法在 Python 中的工作原理。
import numpy as np
li = [1, 2, 3, 4]
multiple = 2.5
arr = np.array(li)
arr = arr * multiple
li = arr.tolist()
print(li)
輸出:
[2.5, 5.0, 7.5, 10.0]
我們使用 np.array(li)
函式將列表 li
轉換為陣列 arr
。然後我們將陣列與標量 multiple
相乘。
與列表不同,我們可以使用 arr = arr * multiple
輕鬆地將 NumPy 陣列的每個元素與一個標量相乘。之後,我們使用 arr.tolist()
函式將新陣列轉換回列表。
最後,將列表 li
的每個元素乘以 2.5
後的結果將顯示在輸出中。當列表大小較小時,不應使用此方法。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn