博客
关于我
python 用for循环删除list列表中的元素,删除不干净的问题
阅读量:301 次
发布时间:2019-03-03

本文共 564 字,大约阅读时间需要 1 分钟。

目标是想从list中删除特定类别的元素,但是发现用for循环删除后,有部分删掉了,还有部分剩下了

代码如下:

list1=['a.txt','b.txt','c.txt','a.jpg','b.jpg','c.jpg']for im in list1:    if im.split('.')[-1] != 'jpg':        list1.remove(im)print(list1)

输出结果:

['b.txt', 'a.jpg', 'b.jpg', 'c.jpg']

会发现,b.txt这个元素并没有被删掉,研究了一下输入输出发现:

  • 就是因为remove会立刻改变list的排序,所以连号的元素没有被删除
  • 因为list的大小变了,但是索引的号却没有更新,所以就会出现跳过的现象

改正也很简单,只要在for循环时的list后面加上[:]即可,修改后的代码如下:

list1=['a.txt','b.txt','c.txt','a.jpg','b.jpg','c.jpg']for im in list1[:]:    if im.split('.')[-1] != 'jpg':        list1.remove(im)print(list1)

此时输出:

['a.jpg', 'b.jpg', 'c.jpg']

转载地址:http://zvgl.baihongyu.com/

你可能感兴趣的文章
Mysql 提示:Communication link failure
查看>>
mysql 插入是否成功_PDO mysql:如何知道插入是否成功
查看>>
Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log
查看>>
mysql 数据库中 count(*),count(1),count(列名)区别和效率问题
查看>>
mysql 数据库备份及ibdata1的瘦身
查看>>
MySQL 数据库备份种类以及常用备份工具汇总
查看>>
mysql 数据库存储引擎怎么选择?快来看看性能测试吧
查看>>
MySQL 数据库操作指南:学习如何使用 Python 进行增删改查操作
查看>>
MySQL 数据库的高可用性分析
查看>>
MySQL 数据库设计总结
查看>>
Mysql 数据库重置ID排序
查看>>
Mysql 数据类型一日期
查看>>
MySQL 数据类型和属性
查看>>
mysql 敲错命令 想取消怎么办?
查看>>
Mysql 整形列的字节与存储范围
查看>>
mysql 断电数据损坏,无法启动
查看>>
MySQL 日期时间类型的选择
查看>>
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
查看>>
MySQL 是如何加锁的?
查看>>
MySQL 是怎样运行的 - InnoDB数据页结构
查看>>