在python中乘以列表元素

时间:2013-07-22 21:43:04

标签: python list

如何将一个列表中的每个元素与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

3 个答案:

答案 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)