给定一个像[1,2,3,4,5,6]这样的数字列表,我如何编写代码将它们相乘,即计算1*2*3*4*5*6?
当前回答
如果你想避免导入任何东西,避免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
其他回答
你可以使用:
import operator
import functools
functools.reduce(operator.mul, [1,2,3,4,5,6], 1)
参见约简和算子。Mul文档进行解释。
你需要在Python 3+中导入functools行。
我会使用numpy。执行任务的提示:
import numpy as np
mylist = [1, 2, 3, 4, 5, 6]
result = np.prod(np.array(mylist))
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)
今天发现了这个问题,但我注意到它没有在列表中有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))
在Python 3.8及以上版本中,数学标准库模块为此提供了.prod:
数学。Prod(可迭代,*,start=1)
该方法返回起始值(默认值:1)乘以数字可迭代对象的乘积:
import math
math.prod([1, 2, 3, 4, 5, 6])
# 720
如果可迭代对象为空,将产生1(或者起始值,如果提供)。
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录