• 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的方式依次,这样相当于遍历的元素跳过了一位,才有了开始的异常错误。

  • 相关阅读:
    scrapy相关信息
    BeautifulSoup常见使用
    requests常用模块以及爬取github个人项目
    django rest framework 与前端跨域问题解决
    nginx配置正向代理与反向代理
    django+nginx+uwsgi+https
    linux基本命令
    python基本算法
    centos7配置ftp服务器
    nginx1.12配置
  • 原文地址:https://www.cnblogs.com/zdwu/p/8434623.html
Copyright © 2020-2023  润新知