如何将一个列表中的每个元素与Python中另一个列表的每个元素相乘,然后对乘法结果变量的结果求和?
list_1 = [0, 1, 2, 3, 4, 5]
list_2 = [11, 23, m]
其中,list_2中的m元素可以是任意数字,而输入中输入列表中元素的长度。所以基本上该列表包含最少2个元素,并且可以根据用户要求最多12个。
我正在寻找的是一个函数/算法,它将允许以下结果列表。:
0 * 11 + 0 * 23 + .. + 0 * m
1 * 11 + 0 * 23 + .. + 0 * m
2 * 11 + 0 * 23 + .. + 0 * m
...
3 * 11 + 2 * 23 + .. + 5 * m
...
5 * 11 + 5 * 23 + .. + 5 * m
答案 0 :(得分:4)
[sum(x * y for x in list_2) for y in list_1]
答案 1 :(得分:2)
itertools.product
可以帮助您生成选择list1
元素的所有方法,以乘以list2
的元素。
sums = []
for list1_choices in itertools.product(list1, repeat=len(list2)):
sums.append(sum(x*y for x, y in zip(list1_choices, list2))
或者,作为列表理解:
[sum(x*y for x, y in zip(list1_choices, list2))
for list1_choices in itertools.product(list1, repeat=len(list2))]
答案 2 :(得分:0)
您可以使用for循环:
for x in list_1:
print sum(x * y for y in list_2)