• python学习之不要在列表迭代的时候进行增删操作


    注意:列表不能在for循环时使用remove方法

    li = [11,22,33,44]
    for i in li :
        li.remove(i)
    print (li)
    #输出
    [22, 44]
    

    ​ for的运行过程,会有⼀个指针来记录当前循环的元素是哪一个, ⼀开始这个指针指向第0个,然后获取到第0个元素,紧接着删除第0个;这个时候,原来是第一个的元素会⾃动的变成第0个,然后指针向后移动⼀次, 指向1元素;此时原来的1已经变成了0, 原来的2变成了1,出现跳着删除的现象。

    ​ pop同样不能再for循环中进行操作,直接会报错。

    li = [11,22,33,44]
    for i in li :
        li.pop(i)
    print (li)
    #输出报错信息
    IndexError: pop index out of range
    

    del同样不能在for循环中进行操作

    总结:由于删除元素会导致元素的索引改变, 所以容易出现问题。尽量不要再循环中直接去删除元素,可以把要删除的元素添加到另一个集合中然后再批量删除。

    仅供参考,欢迎指正
  • 相关阅读:
    [leedcode 46] Permutations
    [leedcode 45] Jump Game II
    [leedcode 43] Multiply Strings
    [leedcode 42] Trapping Rain Water
    [leedcode 41] First Missing Positive
    [leedcode 40] Combination Sum II
    全排列
    [leedcode 39] Combination Sum
    [leedcode 38] Count and Say
    调和级数求和(分块)
  • 原文地址:https://www.cnblogs.com/jjzz1234/p/10994849.html
Copyright © 2020-2023  润新知