我注意到这里已经问过这个问题,但这主要是针对python2的:如何将列表中的所有项目与Python相乘?
随着python3中reduce的终结(请参见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)
但用于乘法
主要的反对意见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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句