两个列表的Python乘法

Ran*_*der 1 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]

Eug*_*ash 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]
Run Code Online (Sandbox Code Playgroud)

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

>>> list_a, list_b = list(range(2, 6)), list(range(2, 6))
Run Code Online (Sandbox Code Playgroud)


Łuk*_*ski 5

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

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

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

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