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

Python移除列表中长度为7的子列表时触发IndexError问题求助

解决列表遍历移除元素时的索引越界问题

错误原因

你的代码在遍历列表时直接修改原列表,导致列表长度动态缩短。循环初始时range(0, len(C))基于原列表长度(5)生成遍历范围,但当你移除元素后,列表长度变为4,当循环执行到i=4时,新列表的最大索引是3,访问C[4]就触发了IndexError。

解决方案

方案1:列表推导式(推荐)

直接生成过滤后的新列表,逻辑简洁且不会出现索引问题:

C = [[0, 2, 3, 5], [1, 3, 4, 6], [2, 0, 3, 5], [3, 0, 1, 2, 4, 5, 6], [8, 5, 6, 7, 9, 10, 11]]
C = [sublist for sublist in C if len(sublist) != 7]
print(C)

输出结果:

[[0, 2, 3, 5], [1, 3, 4, 6], [2, 0, 3, 5]]

方案2:倒序遍历原列表删除元素

如果需要在原列表上直接修改,可以采用倒序遍历的方式,这样删除元素不会影响未遍历的索引:

C = [[0, 2, 3, 5], [1, 3, 4, 6], [2, 0, 3, 5], [3, 0, 1, 2, 4, 5, 6], [8, 5, 6, 7, 9, 10, 11]]
for i in range(len(C)-1, -1, -1):
    if len(C[i]) == 7:
        del C[i]
print(C)

输出结果与方案1一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:57:27