定义列表list_1,使用for循环删除列表中的偶数元素,即能被2整除的元素,代码如下:
# coding: utf-8
list_1 = [3, 6, 8, 9, 25, 36, 100, 105]
for item in list_1:
if item % 2 ==0:
list_1.remove(item)
print(list_1)
程序运行结果如下:
运行结果中8、100仍然存在,没有被删除。----即删除有遗漏
原因:
因为remove()删除一个元素之后,后边的元素会自动覆盖到上一个被删除元素的位置上,此时for循环正向运行,正好会略过这个往前移的元素,继续往下走,造成遍历的遗漏。
解决方法:
逆序删除,从后向前删除,代码如下:
# coding: utf-8
list_1 = [3, 6, 8, 9, 25, 36, 100, 105]
for item in list_1[::-1]:
if item % 2 ==0:
list_1.remove(item)
print(list_1)
运行结果中偶数元素都被删除,没有遗漏。