我想得到使用单行写的for循环或使用Lambda函数将列表中所有数字相乘的结果
我已经使用经典的for循环轻松解决了它,但是我想简化表达式。这个想法是不使用库。
我当前的代码:
num_list = [5,7,3,8]
R = 1;
for num in num_list:
R *= num
print(R)
>>> 840
我尝试过的事情:
R=1
R = [R*=num for num in num_list ]
^
SyntaxError: invalid syntax
简化表达式时,我希望得到相同的值(= 840)
答案 0 :(得分:1)
from functools import reduce
import operator
num_list = [5,7,3,8]
reduce(operator.mul, num_list)
在 Python 3.8 中(将于明年发布),请参见here:
添加了新函数math.prod(),作为与sum()类似的函数 返回“起始”值(默认值:1)乘以可迭代值的乘积 数字。 (由Pablo Galindo在bpo-35606中贡献)
这样您就可以进行math.prod(num_list)