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

如:删除一个列表中长度为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]

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

删除列表中满足一定条件的元素相关推荐

  1. python矩阵中找满足条件的元素_Python 找到列表中满足某些条件的元素方法

    Python 找到列表中满足某些条件的元素方法 更新时间:2018年06月26日 11:20:17 作者:CS_network 今天小编就为大家分享一篇Python 找到列表中满足某些条件的元素方法, ...

  2. 删除列表中的空格(其他元素)的4种方法

    ''' 全部删除列表里的某一个元素: 但是当采用for, while遍历时,删除 当前元素后,列表的长度发生变化,会导致被删掉元素的下一个元素就会 被跳过,这样会造成遍历不彻底,从而可能导致删除不彻底 ...

  3. python删除列表中的重复元素并保持相对顺序不变

    python删除列表中的重复元素并保持相对顺序不变 从列表中删除重复项以便所有元素都是唯一的同时保持原有相对顺序不变 对于列表我们可以使用如下方法: l1 = [1,7,7,8,5,5,4] l2 = ...

  4. python for 循环中使用 remove 删除列表中的元素

    python for 循环中使用 remove 删除列表中的元素 错误的代码 # !/usr/bin/python # encoding: utf-8 # -*- coding: utf8 -*- o ...

  5. python 删除列表中的指定元素

    python 删除列表中的指定元素 def delete_list(list1,ele):"""删除列表中的指定元素:param list1:原列表:param ele: ...

  6. List.removeIf():删除集合中满足给定条件的所有元素

    今天偶然间发现了Collection在1.8新增了一个removeIf(Predicate<? super E> filter)方法,能够实现面试官们常问的:如何一边遍历,一边删除. 首先 ...

  7. python 如何根据索引快速删除列表中的多个元素

    一.批量删除列表中不同位置的元素 列表是python中经常用到的一种数据结构,因python提供了很多方法对其增.删.查.改,故使用起来比较灵活,下面就介绍下如何快速删除列表中多个元素的方法. 二.具 ...

  8. python列表中怎么去掉空值_Python 如何删除列表中的空值

    今天在获取android性能CPU测试数据时,发现这么一个问题: # -*- coding:utf-8 -*- import os import time cpuInfo = os.popen(r'a ...

  9. python 无序列表中第k大元素_Python要求O(n)复杂度求无序列表中第K的大元素实例...

    昨天面试上来就是一个算法,平时基本的算法还行,结果变个法就不会了...感觉应该刷一波Leecode冷静下...今天抽空看下. 题目就是要求O(n)复杂度求无序列表中第K的大元素 如果没有复杂度的限制很 ...

最新文章

  1. protobuf前后端解析_Go语言微服务架构实战:第七节 Protobuf协议语法及原理
  2. Objective-C Reflection(Objective-C 反射机制)实用随笔笔记(持续更新)
  3. 月营收同比 10 倍增长,神策分析 1.8 推出英文版
  4. 在C#程序中实现插件架构
  5. SAP UI5 Focus related
  6. abp vNext微服务框架分析
  7. 2.4g和5g要不要合并_请问千兆路由器,2.4g与5g是双频合一还是分开,该选择哪个?...
  8. C#LeetCode刷题-设计
  9. mzy git学习,初识git(一)
  10. Ubuntu13.04配置优化(一)转贴
  11. matlab2016对硬件要求,matlab2016b配置libsvm的各中坑及解决办法
  12. 项目管理前话001——商业模式画布
  13. 《数据库应用》课程设计人事管理系统(java源代码)
  14. 打印机驱动兼容问题导致打印乱码
  15. U盘提示''这张磁盘有写保护''修复工具
  16. 本地与云服务器(阿里云)实现多客户端虚拟局域网搭建
  17. 解决redisson超时org.redisson.client.RedisResponseTimeoutException: Redis server response timeout
  18. 学习 STM32之九轴姿态传感器(BWT901CL)串口通信读取数据
  19. 朴素贝叶斯(naive bayes)原理小结
  20. Docker容器修改配置文件

热门文章

  1. Forms身份验证基本原理
  2. 划痕实验 迁移面积自动统计_从Jupyter迁移到合作实验室
  3. 柠檬工会_工会经营者
  4. fcc认证_介绍fCC 100:我们对2019年杰出贡献者的年度总结
  5. passport身份验证_了解如何使用Passport.js处理Node身份验证
  6. 科大讯飞 ai算法挑战赛_为井字游戏挑战构建AI算法
  7. RabbitMQ学习系列(一): 介绍
  8. AS 自定义 Gradle plugin 插件 案例 MD
  9. LINQ to Tree - A Generic Technique for Querying Tree-like Structures,包含遍历WPF VisualTree
  10. PS图像菜单下计算命令