如何在单行FOR循环中简化列表数字的乘法?

时间:2019-04-25 01:27:07

标签: python for-loop lambda

我想得到使用单行写的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)

1 个答案:

答案 0 :(得分:1)

您可以使用reduceoperator来做到这一点:

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)