如何用数字乘以列表中的各个元素?

57
S = [22, 33, 45.6, 21.6, 51.8]
P = 2.45

这里S是一个数组。

我该如何对其进行乘法运算并得出结果?

SP = [53.9, 80.85, 111.72, 52.92, 126.91]

6
在Python中,S不是数组,而是列表。这两种容器类型之间有非常大的区别。如果您想要数值数组,请使用numpy。 - talonmies
4个回答

77

42

您可以使用内置的map函数:

result = map(lambda x: x * P, S)

或者列表推导式,这是更符合Python风格的写法:

result = [x * P for x in S]

9
请注意,像标量乘法这样的数组操作在numpy中经过高度优化,比列表推导式快得多。通常建议不要像处理Python列表一样对待numpy数组。 - JoshAdel
1
“一般建议不要像处理Python列表一样处理NumPy数组”,这句话的意思是什么?它与当前没有使用NumPy的答案有什么关系?在2021年,这个说法仍然正确吗?(可能是正确的,但仍不确定,也许出现了一些新的操作符来表示我们真正想要分布式操作而不是列表复制) - mins

21

如果您使用 numpy.multiply

S = [22, 33, 45.6, 21.6, 51.8]
P = 2.45
multiply(S, P)

它会给你一个结果

array([53.9 , 80.85, 111.72, 52.92, 126.91])

1
这里是一个使用mapitertools.repeatoperator.mulfunctional方法:
import operator
from itertools import repeat


def scalar_multiplication(vector, scalar):
    yield from map(operator.mul, vector, repeat(scalar))

使用示例:

>>> v = [1, 2, 3, 4]
>>> c = 3
>>> list(scalar_multiplication(v, c))
[3, 6, 9, 12]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接