给定一个像[1,2,3,4,5,6]这样的数字列表,我如何编写代码将它们相乘,即计算1*2*3*4*5*6?


当前回答

简单的方法是:

import numpy as np
np.exp(np.log(your_array).sum())

其他回答

如果你想避免导入任何东西,避免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

今天发现了这个问题,但我注意到它没有在列表中有None的情况。所以,完整的解决方案是:

from functools import reduce

a = [None, 1, 2, 3, None, 4]
print(reduce(lambda x, y: (x if x else 1) * (y if y else 1), a))

在加法的情况下,我们有:

print(reduce(lambda x, y: (x if x else 0) + (y if y else 0), a))

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)

一种使用方法是math.prod() 例如:

import math
arr = [1, 2, 3, 4]
print(math.prod(arr))

另一种方法是numpy.prod() 这是另一个要导入的库

import numpy
arr = [1, 2, 3, 4]
print(numpy.prod(arr))

那么使用递归呢?

def multiply(lst):
    if len(lst) > 1:
        return multiply(lst[:-1])* lst[-1]
    else:
        return lst[0]