定义列表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)

 

  运行结果中偶数元素都被删除,没有遗漏。

 

posted on 2021-09-01 16:37  beyondhd  阅读(725)  评论(0编辑  收藏  举报