Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeError:在python中计算点积_Python_Function_Python 3.x_Typeerror_Dot Product - Fatal编程技术网

TypeError:在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

我需要编写一个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”对象不可下标


如何更改此代码以使列表中的元素可以按元素相乘?

删除有问题的部分(尝试在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)