Python实现含子列表的主列表无重复项全组合求解
Python生成嵌套列表的笛卡尔积组合
给定嵌套列表:
main_list = [['Orange', 'Banana'], ['Blue', 'Yellow', 'Green'], ['Bike'], ['Ocean', 'Sky']]
需要生成所有满足以下条件的组合:每个结果子列表包含4个元素,分别取自原主列表的不同子列表(每个子列表选一个元素)。
解决方案:使用itertools.product
Python标准库中的itertools.product可以直接计算多个可迭代对象的笛卡尔积,完美匹配需求。代码如下:
import itertools main_list = [['Orange', 'Banana'], ['Blue', 'Yellow', 'Green'], ['Bike'], ['Ocean', 'Sky']] # 计算笛卡尔积并转换为列表的列表 result = [list(combination) for combination in itertools.product(*main_list)] # 打印结果 for item in result: print(item)
代码说明
itertools.product(*main_list):通过*解包原主列表,将每个子列表作为独立参数传入product,函数会生成所有可能的元素组合(每个组合是元组)。- 列表推导式
[list(combination) ...]:将每个元组转换为列表,得到预期的嵌套列表格式。
运行代码后得到的结果与你给出的预期结果完全一致,共生成12个组合(2×3×1×2=12)。
内容的提问来源于stack exchange,提问作者GilsonBergamine
相关产品推荐
相关产品推荐

