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

浙公网安备 33010602011771号