如何将列表中的所有元素相互相乘?
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)
我正在尝试将列表中的所有数字相互相乘
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)