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

如何删除Python列表中奇数索引的元素?运行报列表索引超出范围错误

报错原因

  • 你在正向遍历列表的过程中删除元素,列表的总长度会动态缩短,后续遍历的索引值是基于原始列表长度生成的,就会出现索引大于当前列表最大下标的情况,触发list index out of range错误
  • 另外你使用了list.remove(元素值)的方法,这个方法会删除列表中第一个匹配的元素值,当列表存在重复元素时,就算不报错也会删错目标位置的元素,按索引删除应该用del 列表[索引]的写法

最优解决方案

直接用列表切片一步完成,切片取步长为2的元素,天然就是所有偶数索引(也就是你要保留的非奇数索引元素),代码如下:

list1 = [12,33,45,66,75,33,4,56,66,67,1,2]
list1 = list1[::2]
print(list1)
# 输出结果:[12, 45, 75, 4, 66, 1]

循环实现方案

如果需要用循环逻辑完成需求,可以先收集所有要删除的奇数索引,再按从大到小的顺序删除,避免删除大索引影响小索引的定位:

list1 = [12,33,45,66,75,33,4,56,66,67,1,2]
# 先收集所有要删除的奇数索引
del_indexes = [i for i in range(len(list1)) if i % 2 != 0]
# 倒序删除,避免前面的删除操作影响后面的索引对应关系
for i in sorted(del_indexes, reverse=True):
    del list1[i]
print(list1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:18:02