给定一个像[1,2,3,4,5,6]这样的数字列表,我如何编写代码将它们相乘,即计算1*2*3*4*5*6?
当前回答
Numpy有一个prod()函数,它返回一个列表的乘积,或者在这个例子中,因为它是Numpy,它是一个数组在给定轴上的乘积:
import numpy
a = [1,2,3,4,5,6]
b = numpy.prod(a)
...或者你可以导入numpy.prod():
from numpy import prod
a = [1,2,3,4,5,6]
b = prod(a)
其他回答
如果你想避免导入任何东西,避免Python中更复杂的部分,你可以使用一个简单的for循环:
nums = [1, 2, 3]
product = 1 # Don't use 0 here, otherwise, you'll get zero
# because anything times zero will be zero.
for num in nums:
product *= num
Python 3:使用functools.reduce:
>>> from functools import reduce
>>> reduce(lambda x, y: x*y, [1, 2, 3, 4, 5, 6])
720
Python 2:使用reduce:
>>> reduce(lambda x, y: x*y, [1, 2, 3, 4, 5, 6])
720
为了兼容2和3,请使用Six (pip install Six),然后:
>>> from six.moves import reduce
>>> reduce(lambda x, y: x*y, [1,2,3,4,5,6])
720
Numpy有一个prod()函数,它返回一个列表的乘积,或者在这个例子中,因为它是Numpy,它是一个数组在给定轴上的乘积:
import numpy
a = [1,2,3,4,5,6]
b = numpy.prod(a)
...或者你可以导入numpy.prod():
from numpy import prod
a = [1,2,3,4,5,6]
b = prod(a)
只想添加一个Python 3.8的一行回答:
def multiply(l):
return [b := 1, [b := b * a for a in l]][-1][-1]
print(multiply([2, 3, 8, 10]))
输出:
480
解释:
[b:= 1,用于定义临时变量。 ...[b:= b * a for a in l]用于遍历列表并将b乘以每个元素 ...[1][1]是因为最终名单[b, [b * l [0], b * l[1],…, b * l[-1]]]。所以最后位置的元素是列表中所有元素的乘积。
我会使用numpy。执行任务的提示:
import numpy as np
mylist = [1, 2, 3, 4, 5, 6]
result = np.prod(np.array(mylist))