You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 05:36:04