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

Python实现类zip功能函数 遍历多列表生成多层级元素组合

实现方案

你这个需求不是通用的列表组合/笛卡尔积场景,本质是多级联动下拉菜单的全路径遍历:上一级的每个选项,只对应下一级列表中按顺序匹配的选项分组,所以直接用itertools.product或者原生zip没法直接实现——前者会生成所有无关联的交叉组合,后者只会对位返回分组不会展开拼接路径。

可直接复用的函数

支持传入任意数量的层级分组,返回所有符合联动逻辑的选择路径:

def get_all_select_paths(*level_groups):
    if not level_groups:
        return []
    # 初始化第一层的所有单节点路径
    paths = [[item] for item in level_groups[0]]
    # 逐层拼接下一级选项
    for current_level in level_groups[1:]:
        next_level_paths = []
        group_cursor = 0
        for exist_path in paths:
            # 按游标取当前路径对应的下一级选项分组
            match_group = current_level[group_cursor]
            # 拼接分组内所有选项生成新路径
            for option in match_group:
                next_level_paths.append(exist_path + [option])
            group_cursor += 1
        paths = next_level_paths
    return paths

测试验证

传入你给出的测试数据运行:

a = [["2022"], ["2023"]]
b = [["blue", "red"], ["green", "yellow"]]
c = [["1", "2", "3"], ["4", "5", "6", "7"], ["8", "9", "10", "11"], ["12", "13"]]

result = get_all_select_paths(a, b, c)

运行后result的内容和你给出的预期输出完全一致。

逻辑说明

  • 函数从第一层开始,先把第一层的每个选项生成为单独的初始路径
  • 遍历后续每一层时,维护一个分组游标,按顺序给上一层生成的每个路径,匹配对应的下一级选项分组
  • 把分组内的每个选项拼接到现有路径后,生成下一层的全量路径,直到所有层级遍历完成
  • 只要传入的各层分组符合「第N层的分组总数 = 第N-1层所有选项的总个数」的联动规则,不管层级有多少、每个上级选项对应多少个下级选项,都能正确生成结果

内容的提问来源于stack exchange,提问作者Pexp22

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:36:17