Python程序:查找两个列表的笛卡尔积
假设我们有两个数据列表l1和l2。我们要找到这两个列表的笛卡尔积。我们知道,如果两个列表分别是(a,b)和(c,d),那么它们的笛卡尔积将是{(a,c),(a,d),(b,c),(b,d)}。为了实现这一点,我们将使用itertools库,并使用该库中的product()函数。该函数的返回值是一个迭代器,我们必须通过将输出传递给list()构造函数将其转换为列表。
因此,如果输入为l1 = [1,5,6],l2 = [1,2,9],则输出将是[(1, 1),(1, 2),(1, 9),(5, 1),(5, 2),(5, 9),(6, 1),(6, 2),(6, 9)]
要解决这个问题,我们将遵循以下步骤−
- x := product(l1, l2) 以获取笛卡尔积的迭代器
-
ret := list(x) 将x迭代器转换为列表
-
return ret
示例
让我们看一下以下实现,以更好地理解
from itertools import product
def solve(l1, l2):
return list(product(l1, l2))
l1 = [1,5,6]
l2 = [1,2,9]
print(solve(l1, l2))
输入
[1,5,6],[1,2,9]
输出
[(1,1),(1,2),(1,9),(5,1),(5,2),(5,9),(6,1),(6,2),(6,9)]