博客
关于我
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/

你可能感兴趣的文章
Nginx配置自带的stub状态实现活动监控指标
查看>>
Nginx配置详解
查看>>
nginx配置详解
查看>>
nginx配置详解、端口重定向和504
查看>>
nginx配置负载均衡
查看>>
nginx配置负载均衡
查看>>
Nginx配置负载均衡到后台网关集群
查看>>
Nginx配置限流,技能拉满!
查看>>
Nginx配置静态代理/静态资源映射时root与alias的区别,带前缀映射用alias
查看>>
Nginx限流熔断
查看>>
Nginx限流限速艺术揭秘:从原理到实战,轻松实现服务流量控制
查看>>
Nginx面试三连问:Nginx如何工作?负载均衡策略有哪些?如何限流?
查看>>
Nginx高可用集群构建(Keepalived+Haproxy+Nginx)
查看>>
Nginx(1):Nginx基础配置详解
查看>>
Nginx(2):Nginx配置server节点
查看>>
nginx:/usr/src/fastdfs-nginx-module/src/common.c:21:25:致命错误:fdfs_define.h:没有那个文件或目录 #include
查看>>
Nginx:NginxConfig可视化配置工具安装
查看>>
Nginx:现代Web服务器的瑞士军刀 | 文章末尾送典藏书籍
查看>>
ngModelController
查看>>
ngnix配置文件
查看>>