0

如何在 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

4

3 回答 3

4
[sum(x * y for x in list_2) for y in list_1]
于 2013-07-22T21:45:23.850 回答
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))]
于 2013-07-22T21:56:52.837 回答
0

您可以使用 for 循环:

for x in list_1:
    print sum(x * y for y in list_2)
于 2013-07-22T21:51:06.500 回答