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

问题描述 投票:1回答:1

我希望得到将所有数字乘以列表的结果,使用一行写入的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)

python for-loop lambda
1个回答
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()的类似函数,它返回'start'值(默认值:1)乘以可迭代数字的乘积。 (供稿人:Pablo Galindo,编号为bpo-35606)

所以你将能够做math.prod(num_list)

© www.soinside.com 2019 - 2024. All rights reserved.