Python 添加成对产品
我正在学习一门python课程,其中我们被问到以下问题: 编写一个Python函数,返回listA和listB的成对乘积之和。您应该假设listA和listB具有相同的长度,并且是两个整数列表。例如,如果listA=[1,2,3]和listB=[4,5,6],则点积为1*4+2*5+3*6,这意味着您的函数应该返回:32 我理解这里要求我做什么,我的问题是我不知道如何迭代一个列表并获取另一个列表的值而不丢失索引位置 编辑,我一直在艰难地研究这个问题,甚至没有意识到,因为列表的长度相同,所以两个列表的索引应该是相同的,正如许多人指出的那样,我可以使用zip并提出:Python 添加成对产品,python,Python,我正在学习一门python课程,其中我们被问到以下问题: 编写一个Python函数,返回listA和listB的成对乘积之和。您应该假设listA和listB具有相同的长度,并且是两个整数列表。例如,如果listA=[1,2,3]和listB=[4,5,6],则点积为1*4+2*5+3*6,这意味着您的函数应该返回:32 我理解这里要求我做什么,我的问题是我不知道如何迭代一个列表并获取另一个列表的值而不丢失索引位置 编辑,我一直在艰难地研究这个问题,甚至没有意识到,因为列表的长度相同,所以两个列
def dotProduct(listA, listB):
print(sum(a*b for (a,b) in zip(listA, listB)))
当我执行它时,我不知道为什么我会收到一个低于总和的“无”值
a = dotProduct([-26, -80, -93, -41, 45], [17, -69, -15, 8, -93])
print a
1960
None
>>>
上次编辑:我解决了“无”问题,我没有在函数内部打印,而是将其更改为返回结果。您可以使用相同的索引,因为长度相同:
sum = 0
for i in range(0, len(listA)):
sum += listA[i] * listB[i]
print(sum)
也可以使用生成器表达式:
print(sum(a*b for (a,b) in zip(listA, listB)))
当长度相同时,可以使用相同的索引:
sum = 0
for i in range(0, len(listA)):
sum += listA[i] * listB[i]
print(sum)
也可以使用生成器表达式:
print(sum(a*b for (a,b) in zip(listA, listB)))
功能性方法:
from itertools import starmap
from operator import mul
listA = [1, 2, 3]
listB = [4, 5, 6]
print(sum(starmap(mul, zip(listA, listB))))
功能性方法:
from itertools import starmap
from operator import mul
listA = [1, 2, 3]
listB = [4, 5, 6]
print(sum(starmap(mul, zip(listA, listB))))
两者的索引相同,因为它们的长度相同。您可以迭代索引而不是一个列表的元素。两者的索引相同,因为它们的长度相同。您可以迭代索引而不是一个列表的元素。