将两个不同列表中的元素相乘然后总结嵌套循环
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
>>>
所以我有两组嵌套列表:
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
>>>