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

你可能感兴趣的文章
Neo4j(3):Neo4j Desktop安装
查看>>
Neo4j(4):Neo4j - CQL使用
查看>>
Neo图数据库与python交互
查看>>
NEO改进协议提案1(NEP-1)
查看>>
Neo私链
查看>>
NervanaGPU 项目使用教程
查看>>
Nerves 项目教程
查看>>
nessus快速安装使用指南(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
Nessus漏洞扫描教程之配置Nessus
查看>>
Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
查看>>
nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML.
查看>>
nestesd exception is java .lang.NoSuchMethodError:com.goolge.common.collect
查看>>
nestJS学习
查看>>
net core 环境部署的坑
查看>>
NET Framework安装失败的麻烦
查看>>
Net 应用程序如何在32位操作系统下申请超过2G的内存
查看>>
Net.Framework概述
查看>>
NET3.0+中使软件发出声音[整理篇]<转>
查看>>
net::err_aborted 错误码 404
查看>>
NetApp凭借领先的混合云数据与服务把握数字化转型机遇
查看>>