将两个不同列表中的元素相乘然后总结嵌套循环

Multiplying elements in two different lists then summing up the nested loop

所以我有两组嵌套列表:

l = [[3,4,4],[1,2,1]]
w = [[2,4,1],[3,1,3]]

我想查看每个嵌套列表,将 l 和 w 的两个值相乘(例如在第一个嵌套循环 3*2 中)然后将它们全部相加以确保每个嵌套列表的总面积小于40. 在第一对列表的情况下 3*2 + 4*4 + 4*1 + 1*3 + 2*1 + 1*3 是 34,小于 40.

如果我理解正确的话,这应该可以正常工作:

summ = 0
for l_sub_list,w_sub_list in zip(l,w): #zip will join each element of l with w #element on the same index.
    for l_sub_val,w_sub_val in zip(l_sub_list,w_sub_list):
        print(f"{l_sub_val} * {w_sub_val}")
        summ += l_sub_val*w_sub_val

print(summ)

您也可以选择更短的解决方案:

flat_l = [x for sublist in l for x in sublist] #Creating flat list, with no sub lists.
flat_w = [x for sublist in w for x in sublist]
result = sum([l_number * w_number for l_number,w_number in zip(flat_l,flat_w)])  #Using comprehensive lists, to multiply elements from flat_l list by flat_w list elmeents. Then, summing it with sum function/

print(result)

考虑:

Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> l = [[3,4,4],[1,2,1]]; w = [[2,4,1],[3,1,3]]
>>> list(zip(l,w))
[([3, 4, 4], [2, 4, 1]), ([1, 2, 1], [3, 1, 3])]
>>> for a,b in zip(l,w):
...   s = sum(c*d for c,d in zip(a,b))
...   print(s)
...
26
8
>>>