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

Python 双嵌套列表索引替换后重编号算法实现方案咨询

嵌套列表索引重编号实现思路

整个逻辑可以拆解为4个核心步骤,全程用Python内置方法和itertools即可实现,无需复杂算法:

  • 第一步:确定第一个列表的索引边界
    用itertools.chain.from_iterable扁平化第一个嵌套列表,取最大值得到max_first,即为第一个列表的索引上限,重编号的起始值就是max_first + 1
  • 第二步:提取第二个列表需要重编号的旧索引
    扁平化第二个嵌套列表,筛选出所有大于max_first的元素,用集合去重后排序,得到需要映射的旧索引序列
  • 第三步:生成新旧索引映射表
    用字典推导式生成映射关系,排序后的旧索引按顺序依次对应从起始值开始的连续整数
  • 第四步:遍历替换第二个列表的元素
    遍历第二个嵌套列表的所有元素,属于旧索引的用映射表替换,属于第一个列表的索引直接保留即可

参考代码片段

from itertools import chain

def renumber_second_list(first_nested, second_nested):
    # 计算第一个列表的最大索引
    max_first = max(chain.from_iterable(first_nested))
    # 提取所有需要重编号的旧索引
    old_indices = sorted({
        x for x in chain.from_iterable(second_nested)
        if x > max_first
    })
    # 生成映射字典
    start_num = max_first + 1
    index_map = {old: start_num + idx for idx, old in enumerate(old_indices)}
    # 生成重编号后的第二个嵌套列表
    return [
        [index_map[item] if item in index_map else item for item in sub]
        for sub in second_nested
    ]

代入你给出的示例输入测试,输出结果和你提供的期望最终结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:45:01