两个列表的Python乘法

时间:2016-03-20 13:22:08

标签: python

我有两个清单:

list_a = list_b = list(range(2, 6)) final_list = []

我想知道如何将两个列表中的所有值相乘。我希望我的final_list包含

[2*2, 2*3, 2*4, 2*5, 3*2, 3*3, 3*4, 3*5, 4*2, 4*3, 4*4, 4*5, 5*2, 5*3, 5*4, 5*5]

2 个答案:

答案 0 :(得分:9)

您可以使用列表理解:

>>> list_a = list_b = list(range(2, 6))
>>> [x*y for x in list_a for y in list_b]
[4, 6, 8, 10, 6, 9, 12, 15, 8, 12, 16, 20, 10, 15, 20, 25]

请注意list_a = list_b = list(range(2, 6))使两个变量都指向同一个列表对象。如果不希望这样,请使用单独的列表:

>>> list_a, list_b = list(range(2, 6)), list(range(2, 6))

答案 1 :(得分:5)

itertools.product可用于从任意数量的迭代中获取笛卡尔积。

import itertools
l1 = range(2,6)
l2 = range(2,6)
result = [x*y for x, y in itertools.product(l1, l2)]

要处理一般情况,您可以使用reduce方法。这适用于任意数量的输入序列。

import functools
import operator
import itertools
result = [functools.reduce(operator.mul, operands)
          for operands in itertools.product(l1, l2)]