需求
有N个list,分别是listA,listB,listC。。。等等,N的数量不确定,现在对这些list的所有可能组合的值求笛卡尔积,比如 (listA,listB),(listA,listC),(listB,listC),(listA,listB,listC)。。。求这里每个组合的笛卡尔积。
分析
对实现以上需求,可分解为2个部分:
1.求所有list的组合
2.对所有list组合求笛卡尔积
以上2部在python中可通过 combinations 和 product 来实现。
由于list的数量不确定,所组成的list的组合数量不确定,因此需要用python的动态参数方式处理,即(*args)。
实现
将以上内容包装成一个函数实现,话不多说,直接上代码:
from itertools import product, combinations
def find_cartesian_product(*lists):
all_combinations = []
for i in range(2, len(lists)+1):
all_combinations.extend(combinations(lists, i))
cartesian_products = []
for combination in all_combinations:
cartesian_products.extend(product(*combination))
return cartesian_products
# 示例用法
listA = [1, 2]
listB = ['a', 'b']
listC = ['x', 'y', 'z']
result = find_cartesian_product(listA, listB, listC)
print(result)
标签:cartesian,笛卡尔,python,list,列表,combinations,listA,listC,listB
From: https://www.cnblogs.com/ikzhaoyun/p/17793110.html