2013-12-21 68 views
2

我有两个相同大小的列表,并且我想将两个列表中相同索引位置的两个数据相乘,并得到新的名单。乘以两个相同大小的列表并将结果相加(点积)

>>> left = range(10) 
>>> right = range(10, 20) 
>>> sum([left[i]*right[i] for i in xrange(len(left))]) # output 735 

我想知道是否有更简单的方法来做这样的操作,而不使用非标准的Python库。

+4

'总和(以拉链(左A * B为A,B,右))'可能是最共同。 –

回答

4

这个怎么样

right = range(10, 20)              
left = range(10) 
sum(x*y for x, y in zip(left, right)) 
735 

或为那些功能倾斜;-)

from operator import mul 
from itertools import starmap, izip 
sum(starmap(mul, izip(left, right))) 
735 
+1

第一个是pythonic,第二个给了我一些关于Python函数式编程的思考。谢谢:D – flyer

相关问题