在循环中删除列表中的数据

问题

在循环中删除列表中的数据的时候会报错 :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

posted @ 2017-10-13 20:02  hzxPeter  阅读(292)  评论(0)    收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示