我需要编写一个Python函数,它返回listA
和listB
的成对乘积之和(两个列表总是具有相同的长度,并且是两个整数列表)。 / p>
例如,如果listA = [1, 2, 3]
和listB = [4, 5, 6]
,点积为1*4 + 2*5 + 3*6
,则函数应返回:32
这是我到目前为止编写代码的方式,但它会产生错误。
def dotProduct(listA, listB):
'''
listA: a list of numbers
listB: a list of numbers of the same length as listA
'''
sum( [listA[i][0]*listB[i] for i in range(len(listB))] )
打印:
TypeError:'int'对象不可订阅
如何更改此代码,以便列表中的元素可以按元素相乘?
答案 0 :(得分:1)
删除有问题的部分(尝试下标int):
sum([listA[i]*listB[i] for i in range(len(listB))])
答案 1 :(得分:0)
只需删除[0]
,就可以了:
sum( [listA[i]*listB[i] for i in range(len(listB))] )
更优雅,更具可读性:
sum(x*y for x,y in zip(listA,listB))
甚至更好:
import numpy
numpy.dot(listA, listB)