python中对list遍历的过程中删除元素

来源:互联网 发布:手机强制卸载软件 编辑:程序博客网 时间:2024/05/19 13:29

记录自己踩过的坑,关于在遍历的过程中删除元素,浪费了我好长时间。


使用Iterator或索引直接遍历,然后进行删除操作会造成list的index溢出和结果错误。这是因为当你删除元素时,游标会进行更新,list的len也会产生变化,导致结果不对。


这里推荐两种在遍历过程中进行删除操作的方法:

1. 复制一个list,然后再源list上做删除操作

2. 采用逆序进行遍历


首先介绍第一个方法:
num_list = [1, 2, 3, 4, 5]print(num_list)for item in num_list[:]:    if item == 2:        num_list.remove(item)    else:        print(item)print(num_list)
代码是直接copy的,意思到了行
主要是使用num_list[:]对源list进行复制,然后在源list进行删除操作


第二个方法就是逆序遍历,然后进行删除操作
num_list = [1, 2, 3, 4, 5]print(num_list)for i in range(len(num_list)-1, -1, -1):    if num_list[i] == 2:        num_list.pop(i)    else:        print(num_list[i])print(num_list)



上面两种方法可以实现在遍历list的过程中正确的删除元素


0 0
原创粉丝点击