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中的描述符(descriptor)
Jun 03 Python
python实现井字棋游戏
Mar 30 Python
一步步解析Python斗牛游戏的概率
Feb 12 Python
windows下ipython的安装与使用详解
Oct 20 Python
Python实现桶排序与快速排序算法结合应用示例
Nov 22 Python
Python Socket使用实例
Dec 18 Python
python简单操作excle的方法
Sep 12 Python
python3正则提取字符串里的中文实例
Jan 31 Python
Python如何实现定时器功能
May 28 Python
python读取pdf格式文档的实现代码
Apr 01 Python
Python访问Redis的详细操作
Jun 26 Python
Python实现日志实时监测的示例详解
Apr 06 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下载excel无法打开的解决方法
2013/12/24 PHP
主流PHP框架的优缺点对比分析
2014/12/25 PHP
PHP处理postfix邮件内容的方法
2015/06/16 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
如何使用php等比例缩放图片
2016/10/12 PHP
PHP面向对象程序设计之对象生成方法详解
2016/12/02 PHP
js继承 Base类的源码解析
2008/12/30 Javascript
js 学习笔记(三)
2009/12/29 Javascript
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
2015/02/15 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
js闭包用法实例详解
2016/12/13 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
学习python (2)
2006/10/31 Python
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
pandas DataFrame数据转为list的方法
2018/04/11 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
python计算导数并绘图的实例
2020/02/29 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
2020/11/09 Python
Numpy中的数组搜索中np.where方法详细介绍
2021/01/08 Python
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
英国电气世界:Electrical World
2019/09/08 全球购物
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
护士专业推荐信
2013/11/02 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
党员个人自我评价
2015/03/03 职场文书
读《瓦尔登湖》有感:每个人都需要一个瓦尔登湖
2019/10/17 职场文书
Python中itertools库的四个函数介绍
2022/04/06 Python