对列表遍历同时增删操作时注意事项 c

不要对同一列表进行'增删'操作,会导致数据不准确;

例子:

list1 = [1, 2, 2, 3, 4, 5]
for i in list1:
if i == 2: # 判断为2,然后进行操作
list1.remove(i)
print(list1) # [1, 2, 3, 4, 5]
#结果并没有将所有的2都移除, 当判断到第一个2的时候,后面的数字会自动插入到被删除的位置,
#而程序继续运行到下一个索引的时候,同样为2的数字插入到了前一个位置,导致了数据的不准确

避免出现错误写法: 将要操作的数据标记,append到另一个列表中,然后用元列表与标记列表进行数据的增删
list1 = [1, 2, 2, 3, 4, 5]
flag_list = []
for i in list1:
if i == 2: # 判断为2,然后进行操作
flag_list.append(i)
for temp in flag_list:
  list1.remove(temp)
print(list1)
原文地址:https://www.cnblogs.com/yuanzhengchi/p/8478581.html