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



我正试图将列表中的所有数字与其他相乘

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

它的输出应该是24,但由于某种原因,我得到了4。为什么会出现这种情况?

循环的每次迭代都将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)

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

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

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

math.prod(可迭代,*,start=1(

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)

相关内容

  • 没有找到相关文章

最新更新