Python 如何在一行循环中简化列表数的乘法?

Python 如何在一行循环中简化列表数的乘法?,python,for-loop,lambda,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 ]

我想要得到将所有的数字相乘到一个列表中的结果,使用一个写在一行中的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),您可以使用和:

(将于明年发布)中,请参见:

添加了新函数math.prod(),作为sum()的类似函数 返回“开始”值(默认值:1)乘以iterable的乘积 数字的数量。(由巴勃罗·加林多在bpo-35606中提供)

因此,您将能够执行
math.prod(num\u list)

from functools import reduce
import operator

num_list = [5,7,3,8]
reduce(operator.mul, num_list)