TypeError:在python中计算点积
我需要编写一个Python函数,返回TypeError:在python中计算点积,python,function,python-3.x,typeerror,dot-product,Python,Function,Python 3.x,Typeerror,Dot Product,我需要编写一个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
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”对象不可下标
如何更改此代码以使列表中的元素可以按元素相乘?删除有问题的部分(尝试在int下下标):
只需删除
[0]
,即可工作:
sum([listA[i]*listB[i]表示范围内的i(len(listB)))
更加优雅易读,请执行以下操作:
sum(x*y代表x,y在zip中(listA,listB))
或者更好:
import numpy
numpy.dot(listA, listB)
删除
[0]
,A是列表,而不是列表如果listA
是整数列表,则listA[i]
是整数。那么你如何才能做到listA[i][0]
?试试sum(a*b代表a,b在zip中(listA,listB))
import numpy
numpy.dot(listA, listB)