如何将列表中的所有元素相互相乘?

How do I multiply all the elements inside a list by each other?

我正在尝试将列表中的所有数字相互相乘

a = [2,3,4]
for number in a:
        total = 1 
        total *= number 
return total 

这个输出应该是 24,但由于某种原因我得到了 4。为什么会这样?

方法一: 使用 numpy 包中的 prod 函数。

import numpy
     ...: a = [1,2,3,4,5,6]
     ...: b = numpy.prod(a)

In [128]: b
Out[128]: 720

方法二: 在 Python 3.8 中,数学模块中添加了 prod:

math.prod(iterable, *, start = 1)

math.prod(a) 

也会这样做

您在循环的每次迭代中将 total 初始化为 1。

代码应该是(如果你确实手动完成):

a = [2, 3, 4]
total = 1
for i in a:
    total *= i

这解决了您的 直接 问题,但是,如果您使用的是 Python 3.8 或更高版本,此功能位于 math 库中:

import math
a = [2, 3, 4]
total = math.prod(a)

如果你不想使用 numpy,那么使用 reduce 函数。

from functools import reduce
reduce(lambda x, y: x*y, [1, 2, 3, 4, 5])

它是 4 的原因是因为在 for 循环中,您执行 total = 1,然后在每次迭代中将 total 乘以当前数字。所以它会循环到最后,最后一个元素是4,你把4乘以1,所以现在总数是4。

如果你想对列表中的所有元素进行多重处理。我建议你使用 numpy.prod:

import numpy as np
list = [2,3,4,5]
final = np.prod(list)