如何实现Python中含依赖关系的三个列表组合?
Python生成指定组合列表的实现方案
问题说明
给定以下三个列表:
l1 = [1, 2] l2 = [3, 4] l3 = [[11, 111], [22, 222]] # l3的第i个子列表对应l1第i个元素的可选值
需要生成所有符合规则的三元组组合,最终输出格式如下:
[(1,3,11), (1,3,111), (1,4,11), (1,4,111), (2,3,22), (2,3,222), (2,4,22), (2,4,222)]
方法1:嵌套循环实现(直观易读)
通过三层嵌套循环,依次遍历l1与l3的配对元素、l2的元素、l3子列表的可选值,逐个生成三元组:
l1 = [1, 2] l2 = [3, 4] l3 = [[11, 111], [22, 222]] result = [] for num1, options in zip(l1, l3): for num2 in l2: for opt in options: result.append((num1, num2, opt)) print(result)
方法2:利用itertools.product简化代码
借助Python标准库itertools的product函数处理笛卡尔积,减少嵌套层级:
import itertools l1 = [1, 2] l2 = [3, 4] l3 = [[11, 111], [22, 222]] # 列表推导式版本,代码更紧凑 result = [ combo for num1, options in zip(l1, l3) for combo in itertools.product([num1], l2, options) ] print(result)
方法3:纯列表推导式(无额外依赖)
如果不想引入外部库,直接用嵌套列表推导式实现:
l1 = [1, 2] l2 = [3, 4] l3 = [[11, 111], [22, 222]] result = [ (num1, num2, opt) for num1, options in zip(l1, l3) for num2 in l2 for opt in options ] print(result)
内容的提问来源于stack exchange,提问作者CornelioQuinto
相关产品推荐
相关产品推荐

