给定一个像[1,2,3,4,5,6]这样的数字列表,我如何编写代码将它们相乘,即计算1*2*3*4*5*6?
当前回答
只想添加一个Python 3.8的一行回答:
def multiply(l):
return [b := 1, [b := b * a for a in l]][-1][-1]
print(multiply([2, 3, 8, 10]))
输出:
480
解释:
[b:= 1,用于定义临时变量。 ...[b:= b * a for a in l]用于遍历列表并将b乘以每个元素 ...[1][1]是因为最终名单[b, [b * l [0], b * l[1],…, b * l[-1]]]。所以最后位置的元素是列表中所有元素的乘积。
其他回答
nums = str(tuple([1,2,3]))
mul_nums = nums.replace(',','*')
print(eval(mul_nums))
你可以使用:
import operator
import functools
functools.reduce(operator.mul, [1,2,3,4,5,6], 1)
参见约简和算子。Mul文档进行解释。
你需要在Python 3+中导入functools行。
一种使用方法是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))
Python 3:使用functools.reduce:
>>> from functools import reduce
>>> reduce(lambda x, y: x*y, [1, 2, 3, 4, 5, 6])
720
Python 2:使用reduce:
>>> reduce(lambda x, y: x*y, [1, 2, 3, 4, 5, 6])
720
为了兼容2和3,请使用Six (pip install Six),然后:
>>> from six.moves import reduce
>>> reduce(lambda x, y: x*y, [1,2,3,4,5,6])
720
在Python 3.8及以上版本中,数学标准库模块为此提供了.prod:
数学。Prod(可迭代,*,start=1)
该方法返回起始值(默认值:1)乘以数字可迭代对象的乘积:
import math
math.prod([1, 2, 3, 4, 5, 6])
# 720
如果可迭代对象为空,将产生1(或者起始值,如果提供)。
推荐文章
- 滚动或滑动窗口迭代器?
- python的方法找到最大值和它的索引在一个列表?
- 如何读取文件的前N行?
- 如何删除matplotlib中的顶部和右侧轴?
- 解析.py文件,读取AST,修改它,然后写回修改后的源代码
- Visual Studio Code:如何调试Python脚本的参数
- 如何克隆或复制一个列表在kotlin
- 使用元组/列表等等。从输入vs直接引用类型如list/tuple/etc
- 结合conda环境。Yml和PIP requirements.txt
- 将命名元组转换为字典
- 如何使x轴和y轴的刻度相等呢?
- Numpy在这里函数多个条件
- 在Python中,使用argparse只允许正整数
- 如何排序mongodb与pymongo
- 不可变与可变类型