zs2*_*020 10 python reduce sum map-function
我能够使用map和sum实现这个功能,但如何使用reduce?
有两个列表:a,, b它们具有相同数量的值.我想算一算
a[0]*b[0]+a[1]*b[1]+...+a[n]*b[n]
Run Code Online (Sandbox Code Playgroud)
我写的工作版本map是
value = sum(map(lambda (x,y): x*y, zip(a, b)))
Run Code Online (Sandbox Code Playgroud)
怎么用reduce呢?我写:
value = reduce(lambda (x,y): x[0]*y[0] + x[1]*y[1], zip(a, b)))
Run Code Online (Sandbox Code Playgroud)
我收到错误" TypeError: 'float' object is unsubscriptable".
任何人都可以对此有所了解吗?
ant*_*kos 10
lambda函数的第一个参数是到目前为止的总和,第二个参数是下一对元素:
value = reduce(lambda sum, (x, y): sum + x*y, zip(a, b), 0)
Run Code Online (Sandbox Code Playgroud)
我会这样做(我不认为你需要lambda)...
sum(x*y for x, y in zip(a, b))
Run Code Online (Sandbox Code Playgroud)
这似乎也更明确一些.Zip AB,将它们相乘,并总结条款.
使用reduce和的解决方案map,
from operator import add,mul
a = [1,2,3]
b = [4,5,6]
print reduce(add,map(mul,a,b))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14960 次 |
| 最近记录: |