我注意到这里已经提出过这个问题,但这主要涉及python2: How can I multiply all items in a list together with Python?
随着python3中reduce的消亡(参见What is the problem with reduce()?),将迭代中的数字相乘的最佳方法是什么?
例如。 [1,3,7,1,2]
- > 1*3*7*1*2
我现在正在使用这样的东西
def foo(list)
sum = 1
for i in list:
sum *= i
return sum
我真的很喜欢一个班轮,而不必from functools import reduce
类似于:total = sum(b for a,b in items)
但是用于乘法
答案 0 :(得分:3)
对reduce
的主要反对意见似乎是滥用任意减少功能。如果您坚持使用简单的,预先存在的关联运算符,那么就没有理由不使用reduce
。
from functools import reduce
from operator import mul
x = reduce(mul, [1,3,7,1,2])
您甚至可以更进一步,使用reduce
撰写mul
和functools.partial
。
product = functools.partial(functools.reduce, operator.mul)
x = product(b for a, b in items)