zoukankan      html  css  js  c++  java
  • 【避坑】for循环删除列表元素的注意事项--remove函数逆序删除

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

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

  • 相关阅读:
    [NOI2001]炮兵阵地
    POJ 2411 Mondriaan's Dream
    【模板】割点(割顶)
    [Noip2007]Core树网的核
    2018.09.09模拟总结
    2018.09.08模拟总结
    [USACO11JAN]Roads and Planes
    最优贸易
    [USACO08JAN]Telephone Lines
    Calabash(葫芦娃)
  • 原文地址:https://www.cnblogs.com/beyondhd/p/15215291.html
Copyright © 2011-2022 走看看