• python 删除正在for循环遍历的list正确做法


    先放一个python遍历发生的异常:

    1 ls =[1,2,3,4,5,6,7,8,9]
    2 for i in ls:
    3     print("i",i)
    4     print("ls",ls)
    5     ls.remove(i)

    运行结果:

    i 1
    ls [1, 2, 3, 4, 5, 6, 7, 8, 9]
    i 3
    ls [2, 3, 4, 5, 6, 7, 8, 9]
    i 5
    ls [2, 4, 5, 6, 7, 8, 9]
    i 7
    ls [2, 4, 6, 7, 8, 9]
    i 9
    ls [2, 4, 6, 8, 9]
    

     我期待的是遍历从1~9一个不落,但是每次都跳过一个元素,这让我很意外,好奇,也很纳闷?

     原来for 循环在遍历的时候,遍历的对象也是动态的,不是我之前认为的一旦开始遍历ls = [1,2,3,4,5,6,7,8,9],这个list就固定了。

         不是这样的!!

        这就是很好的例子!

        我思考猜测的原因:

        在for循环遍历对象时,也是会根据 list 的元素个数进行遍历,如果你对list本身删除了一个元素,元素个数就发生了变化,相当于整个列表向左移动一位,可是这时候index是按照1——>2——>3的方式依次,这样相当于遍历的元素跳过了一位,才有了开始的异常错误。

  • 相关阅读:
    字符串动手动脑
    类与对象课后思考
    java动手动脑课后思考题
    java思考题
    《大道至简第二章读后感》
    从命令行接收多个数字,求和之后输出结果
    《大道至简》读后感
    团队项目成员和题目
    软件工程个人作业04
    软件工程个人作业03
  • 原文地址:https://www.cnblogs.com/zdwu/p/8434623.html
Copyright © 2020-2023  润新知