You need to enable JavaScript to run this app. Python三层嵌套列表定向展开及itertools.product应用问题
优惠活动
大模型
产品
解决方案
定价
更多

Python三层嵌套列表定向展开及itertools.product应用问题

嵌套坐标列表展开实现方案

核心逻辑

你需要的能力可以通过「条目类型判断+笛卡尔积展开」的组合逻辑实现,同时兼容原有的二层嵌套输入格式。

完整实现代码

import itertools

def format_coord_data(raw_data):
    processed = []
    for entry in raw_data:
        # 判断当前条目是否为需要展开的三层嵌套结构
        is_three_level = any(isinstance(col, list) for col in entry)
        if is_three_level:
            # 对三层结构生成笛卡尔积,转换为列表后批量加入结果
            for item in itertools.product(*entry):
                processed.append(list(item))
        else:
            # 二层结构直接保留原条目
            processed.append(entry)
    return processed

测试验证

代入你给出的示例输入:

data = [[["B_01"], ["10"], ["10", "20"], ["10", "20"]],
        ["D_02", "10", "10", "20"],
        ["X_03", "10", "10", "20"]]

print(format_coord_data(data))

输出结果和你要求的目标格式完全一致:

[
    ["B_01", "10", "10", "10"],
    ["B_01", "10", "10", "20"],
    ["B_01", "10", "20", "10"],
    ["B_01", "10", "20", "20"],
    ["D_02", "10", "10", "20"],
    ["X_03", "10", "10", "20"]
]

问题对应说明

  • 三层嵌套列表的展开:直接对单条三层嵌套的条目解包后传入itertools.product(),生成的所有组合就是你需要的展开结果,转为列表格式即可
  • 仅对三层嵌套条目执行展开:通过any(isinstance(col, list) for col in entry)判断条目层级,仅命中判断逻辑的条目才会执行展开,原有的二层条目会直接保留,不需要额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 13:18:03