在 Python 中将列表中的每个元素乘以一个数字
Multiply each element in a list by a number in Python
将列表中的每个元素乘以一个数字:
- 使用列表理解来遍历列表。
- 在每次迭代中,将当前元素乘以数字。
- 新列表将包含乘法结果。
# ✅ Multiply each element in list by number my_list = [2, 4, 6] result = [item * 10 for item in my_list] print(result) # 👉️ [20, 40, 60] # ------------------------------------------ # ✅ Multiply all elements in list import math from functools import reduce my_list = [2, 4, 6] # ✅ multiply all elements in list using math.prod() result = math.prod(my_list) print(result) # 👉️ 48 # --------------------------------------------------- # ✅ multiply all elements in list using reduce() result_2 = reduce(lambda x, y: x * y, my_list) print(result_2) # 👉️ 48
我们使用列表理解来遍历列表并将每个列表项乘以10
。
在每次迭代中,我们将当前列表项乘以指定的数字并返回结果。
或者,您可以使用简单的for
循环。
for
使用循环将列表中的每个元素乘以一个数字
将列表中的每个元素乘以一个数字:
- 声明一个存储空列表的新变量。
- 使用
for
循环遍历原始列表。 - 在每次迭代中,将当前列表项乘以数字。
- 将结果附加到新列表。
my_list = [2, 4, 6] result = [] for item in my_list: result.append(item * 10) print(result)
循环的for
工作方式与列表理解非常相似,但我们不是直接返回列表项,而是将它们附加到一个新列表中。
您还可以使用该map()
函数来乘以列表中的每个元素。
my_list = [2, 4, 6] result = list(map(lambda item: item * 10, my_list)) print(result) # 👉️ [20, 40, 60]
map()函数将一个函数和一个可迭代对象作为参数,并使用可迭代对象的每个项目调用该函数。
map
对列表中的每个项目进行调用,将项目乘以10
并返回结果。最后一步是使用list()
类将map
对象转换为
list
.
如果您使用 numpy 数组,则可以直接使用数组的乘法运算符将其每个元素乘以一个数字。
import numpy as np arr = np.array([2, 4, 6]) result = arr * 10 print(result) # 👉️ [20 40 60]
请注意,这仅适用于 numpy 数组。如果将 python 列表乘以一个数字,它会重复 N 次。
print([2, 4, 6] * 2) # 👉️ [2, 4, 6, 2, 4, 6]
将 Python 列表乘以 N 返回一个新列表,其中包含重复 N 次的原始列表的元素。
如果需要将列表中的所有元素相乘,请使用该math.prod()
函数。
在 Python 中将列表中的所有元素相乘
使用该math.prod()
方法将列表中的所有元素相乘,例如
result = math.prod(my_list)
. 该math.prod()
方法计算提供的可迭代对象中所有元素的乘积。
import math from functools import reduce my_list = [2, 3, 5] # ✅ multiply all elements in list using math.prod() result = math.prod(my_list) print(result) # 👉️ 30 # --------------------------------------------------- # ✅ multiply all elements in list using reduce() result_2 = reduce(lambda x, y: x * y, my_list) print(result_2) # 👉️ 30
math
确保在顶部导入模块。
我们使用该math.prod
方法将列表中的所有元素相乘。
math.prod方法计算提供的可迭代对象中所有元素的乘积。
import math my_list = [5, 5, 5] result = math.prod(my_list) print(result) # 👉️ 125
该方法采用以下 2 个参数:
姓名 | 描述 |
---|---|
可迭代的 | 一个迭代器,其元素计算其乘积 |
开始 | 产品的起始值(默认为1 ) |
如果可迭代对象为空,start
则返回该值。
或者,您可以使用该reduce()
功能。
使用#将列表中的所有元素相乘reduce()
将列表中的所有元素相乘:
- 将 lambda 函数和列表传递给该
reduce()
函数。 - lambda 函数应采用累加器和当前值,并应返回两者的乘积。
from functools import reduce my_list = [2, 3, 5] result = reduce(lambda x, y: x * y, my_list) print(result) # 👉️ 30
reduce
函数采用以下 3 个参数:
姓名 | 描述 |
---|---|
功能 | 一个带有 2 个参数的函数 – 累加值和可迭代的值。 |
可迭代的 | iterable 中的每个元素都将作为参数传递给函数。 |
初始值设定项 | 一个可选的初始化值,在计算中放置在可迭代项之前。 |
如果我们为参数提供一个值initializer
,它会被放在计算中可迭代项的前面。
from functools import reduce my_list = [2, 3, 5] def do_math(acc, curr): print(acc) # 👉️ is 10 on first iteration return acc * curr result = reduce(do_math, my_list, 10) print(result) # 👉️ 300
我们传递10
了初始化参数,因此 的值accumulator
将出现10
在第一次迭代中。
accumulator
如果我们没有为 传递一个值,那么的值将被设置为可迭代对象中的第一个元素initializer
。如果iterable
为空并且initializer
提供了,initializer
则返回。
如果initializer
未提供并且可迭代对象仅包含1
项目,则返回第一项。
from functools import reduce my_list = [2] result = reduce(lambda acc, curr: acc * curr, my_list) print(result) # 👉️ 2