博客
关于我
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改动rootpassword的多种方法
查看>>
mysql数据分组索引_MYSQL之索引配置方法分类
查看>>
mysql数据取差,mysql屏蔽主外键关联关系
查看>>
MySQL数据和Redis缓存一致性方案详解
查看>>
MySQL数据和Redis缓存一致性方案详解
查看>>
Mysql数据库 InnoDB存储引擎中Master Thread的执行流程
查看>>
MySQL数据库 范式
查看>>
Mysql数据库B-Tree索引
查看>>
mysql数据库io空闲_mysql数据库磁盘io高的排查
查看>>
mysql数据库root密码忘记,查看或修改的解决方法
查看>>
MySQL数据库SQL注入靶场sqli通关实战(附靶场安装包)
查看>>
MYSQL数据库下载安装(Windows版本)
查看>>
MySQL数据库与Informix:能否创建同名表?
查看>>
mysql数据库中的数据如何加密呢?mysql8.0自带新特性
查看>>
MySQL数据库优化
查看>>
MySQL数据库优化总结
查看>>
MySQL数据库入门看这一篇文章就够了
查看>>
Mysql数据库函数contac_函数:函数删除操作语法&使用例——《mysql 从入门到内卷再到入土》...
查看>>
mysql数据库命令备份还原
查看>>
mysql数据库基础教程
查看>>