Python实现删除列表中满足一定条件的元素示例


Posted in Python onJune 12, 2017

本文实例讲述了Python实现删除列表中满足一定条件的元素。分享给大家供大家参考,具体如下:

从列表中删除满足一定条件的元素。

如:删除一个列表中长度为0的元素,或者删除列表中同时是2和3的倍数的元素。

做过高级语言编程的人想当然的会认为“这很简单”,可以如下面的方式来实现:

for i in listObj:
  if(...):
    listObj.remove(i)

看下一个小例子和结果:

a = [1, 2, 3, 12, 12, 5, 6, 8, 9]
for i in a:
    if i % 2 == 0 and i % 3 == 0:
      a.remove(i)
print(a)

运行结果:

E:\Program\Python>d.py
[1, 2, 3, 12, 5, 8, 9]

看到了吗?12竟然没有被删除!!!(这是Python列表操作的一个非常容易出错的地方)

要实现预期的目标,其实还是有不少变通方法的,比如:

a = [1, 2, 3, 12, 12, 5, 6, 8, 9]
b = a[:]
for i in a:
    if i % 2 == 0 and i % 3 == 0:
      b.remove(i)
a = b
print(a)

运行结果:

E:\Program\Python>d.py
[1, 2, 3, 5, 8, 9]

看看,现在达到预期的目标了吧。从上面的代码不难发现,我们构建了列表b,复制了列表a中的所有元素,通过遍历a来删除b中的元素,最后把a指向b。

我还发现了另一种方法,自认为挺不错的——列表推导式

a = ['what', '', '', 'some', '', 'time']
a = [i for i in a if len(i) > 0]
print(a)
b = [1, 2, 3, 12, 12, 5, 6, 8, 9]
b = [i for i in b if not(i % 3 == 0 and i % 2 == 0)]
print(b)

运行结果:

E:\Program\Python>d.py
['what', 'some', 'time']
[1, 2, 3, 5, 8, 9]

相比较之下,您认为哪种写法更好呢??从性能上来看,可能效率都不是太好,但是从写法简洁上来看,我是更喜欢后者!

更多Python相关内容感兴趣的读者可查看本站专题:《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
使用python编写脚本获取手机当前应用apk的信息
Jul 21 Python
Python变量作用范围实例分析
Jul 07 Python
Python的Twisted框架上手前所必须了解的异步编程思想
May 25 Python
python读取oracle函数返回值
Jul 18 Python
Python入门教程之运算符与控制流
Aug 17 Python
Python实现统计代码行的方法分析
Jul 12 Python
python实现TF-IDF算法解析
Jan 02 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
Jul 31 Python
python实现信号时域统计特征提取代码
Feb 26 Python
python修改linux中文件(文件夹)的权限属性操作
Mar 05 Python
python 开心网和豆瓣日记爬取的小爬虫
May 29 Python
python代码实现备忘录案例讲解
Jul 26 Python
Ubuntu 下 vim 搭建python 环境 配置
Jun 12 #Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
Jun 12 #Python
详谈python http长连接客户端
Jun 12 #Python
浅谈Python 的枚举 Enum
Jun 12 #Python
sublime text 3配置使用python操作方法
Jun 11 #Python
python爬虫之百度API调用方法
Jun 11 #Python
python数据处理实战(必看篇)
Jun 11 #Python
You might like
PHP个人网站架设连环讲(三)
2006/10/09 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
2014/07/30 PHP
ThinkPHP登录功能的实现方法
2014/08/20 PHP
Thinkphp多文件上传实现方法
2014/10/31 PHP
CodeIgniter生成静态页的方法
2016/05/17 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
JavaScript 继承详解 第一篇
2009/08/30 Javascript
js显示时间 js显示最后修改时间
2013/01/02 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
JavaScript DOM基础
2015/04/13 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
详解express与koa中间件模式对比
2017/08/07 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
2019/07/29 Javascript
Vue 自定义指令功能完整实例
2019/09/17 Javascript
webpack+express实现文件精确缓存的示例代码
2020/06/11 Javascript
python 实现登录网页的操作方法
2018/05/11 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
2018/10/11 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
Python之字典添加元素的几种方法
2020/09/30 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
小学教师学期末自我评价
2013/09/25 职场文书
大门门卫岗位职责
2013/11/30 职场文书
英语专业学生个人求职信
2014/01/28 职场文书
小学生民族团结演讲稿
2014/08/27 职场文书
授权委托书范本(单位)
2014/09/28 职场文书