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

Python合并含重复元素嵌套列表时出现索引越界错误如何解决

问题报错原因
  • 根本原因是你在遍历列表Tb的过程中,动态删除了Tb的元素(调用pop方法),但for i in range(len(Tb))的遍历范围是循环启动前就计算好的固定值,当Tb长度变小后,后续的索引i、j就会超出当前Tb的实际长度,触发索引越界错误。
  • 原有逻辑还存在其他问题:合并后的列表会重复添加到Tc、没有对Tc自身做去重合并处理,无法得到期望的输出结果。
正确实现方案

采用不修改原列表的逐次合并逻辑,避免索引越界,代码如下:

Tb = [[1],[1,3],[1,2],[5,7]]
Tc = []
for sub_list in Tb:
    sub_set = set(sub_list)
    merged = False
    # 遍历已合并的结果,找有交集的项合并
    for i in range(len(Tc)):
        existing_set = set(Tc[i])
        # 判断两个子列表是否有公共元素
        if sub_set & existing_set:
            Tc[i] = list(sub_set | existing_set)
            merged = True
            break
    # 没有可合并的项就直接加入结果
    if not merged:
        Tc.append(list(sub_set))
# 可选:对子列表排序,匹配期望的输出格式
for i in range(len(Tc)):
    Tc[i].sort()
print(Tc) # 输出 [[1, 2, 3], [5, 7]]
逻辑说明
  • 全程不修改原列表Tb,从根源避免索引越界问题
  • 维护结果列表Tc,每次拿Tb的子项和Tc中已有项判断是否有交集,有交集就合并,没有就新增,逻辑清晰可控
  • 若不需要子列表按升序排列,可删除最后的排序代码段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:06:00