我正在参加一个python课程,我们被问到以下问题:
编写一个Python函数,返回listA和listB的成对乘积之和。您应该假设listA和listB具有相同的长度,并且是两个整数列表。例如,如果listA = [1,2,3]和listB = [4,5,6],则点积为1 * 4 + 2 * 5 + 3 * 6,这意味着您的函数应该返回:32
我理解我在这里要求的是什么,我的问题是我不知道如何迭代一个列表并获取另一个列表的值而不会丢失我的索引位置。
编辑,我正在努力地看着这个,甚至没有意识到,因为列表长度相同,索引对于两者都是相同的,因为miltuple人指出我可以使用zip并提出: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
>>>
最后编辑:我想出了NONE问题,而不是在函数内部打印,我更改了它以返回结果。
答案 0 :(得分:3)
您可以使用相同的索引,因为长度相同:
var loggerRepo = LogManager.GetRepository();
if (loggerRepo != null) {
var appender = loggerRepo.GetAppenders().OfType < AdoNetAppender > ().First(a => a.Name == "YourAppenderName");
appender.ConnectionString = ConfigurationManager.ConnectionStrings[""].ConnectionString;
appender.ActivateOptions();
}
_log.Info("LogSOmeth9ng");
或者您可以使用生成器表达式:
case
答案 1 :(得分:1)
功能方法:
from itertools import starmap
from operator import mul
listA = [1, 2, 3]
listB = [4, 5, 6]
print(sum(starmap(mul, zip(listA, listB))))