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

从列表移除偶数元素时遇索引越界问题,求简易实现代码

解决列表移除偶数时索引越界的问题

你遇到的索引越界问题,是因为遍历列表时直接删除元素会导致列表长度变短,后续的索引会超出新列表的范围。给你几个简单易懂的解决方案,适合初学者:

方法1:新建列表存奇数(最安全易理解)

不修改原列表,直接遍历每个元素,把奇数挑出来放进新列表:

original_list = [1, 2, 3, 4, 5]
odd_list = []
for num in original_list:
    # 判断是否为奇数:除以2余数不为0
    if num % 2 != 0:
        odd_list.append(num)
print(odd_list)  # 输出 [1, 3, 5]

方法2:列表推导式(Python简洁写法)

这是Python常用的简化写法,和方法1逻辑一致,但代码更短:

original_list = [1, 2, 3, 4, 5]
odd_list = [num for num in original_list if num % 2 != 0]
print(odd_list)

方法3:倒序遍历修改原列表

如果一定要直接修改原列表,就得从后往前遍历。这样删除元素时,不会影响前面未遍历的元素索引:

original_list = [1, 2, 3, 4, 5]
# 从最后一个索引开始,到第一个索引结束,步长为-1(倒着走)
for i in range(len(original_list)-1, -1, -1):
    if original_list[i] % 2 == 0:
        del original_list[i]
print(original_list)  # 输出 [1, 3, 5]

推荐初学者先掌握前两种方法,尤其是列表推导式,既简洁又不容易出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:10:44