在循环中删除列表中的数据
问题
在循环中删除列表中的数据的时候会报错 :List out of range
在for循环的时候,在for循环的条件中已经固定了循环的次数是列表的长度了,但是在for循环中删除一个数据的时候,列表的长度会减少,导致索引溢出
l = [1, 2, 3, 4, 4, 7, 8]
for i in range(len(l)):
if l[i] == 2:
l.remove(l[i])
print(l)
解决方案
1 遍历拷贝的list,操作原始的list。
import copy
l1 = [1,2,3,5,6,5,8,9]
l2 = copy.copy(l1)
for i in range(0,len(l1)):
if l1[i] % 2 == 1:
l2.remove(l1[i])
print(l2)
2 倒序循环遍历
参考:
http://www.cnblogs.com/bananaplan/p/remove-listitem-while-iterating.html
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步