我需要编写一个Python函数,该函数返回listA
和listB
的成对乘积之和(两个列表将始终具有相同的长度,并且是两个整数列表)。
例如,如果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]
,它就会起作用: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)
关于python - TypeError:在python中计算点积,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39823879/