本文实例讲述了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程序设计有所帮助。
问题内容: 我想从这些数据结构中按值删除满足某些条件的元素 从上一个问题中,我找到了使用的简洁答案,但是似乎需要精确匹配。 在这里,我想从表或映射中删除其值小于特定阈值的元素。您编写代码的方式是什么? 我只检查了两个答案,这些是关于map的答案,表情况如何?我的解决方案如下。 问题答案: Iterator iterator = hmap.values().iterator(); while (it
本文向大家介绍Python 找到列表中满足某些条件的元素方法,包括了Python 找到列表中满足某些条件的元素方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇Python 找到列表中满足某些条件的元素方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
我试图改变我的想法,以功能的方式思考,最近面临着这样一种情况,我需要从列表中提取元素,直到满足一个条件,我找不到一个简单自然的方法来实现这一点。显然我还在学习。 假设我有这个清单: 提前感谢您的投入 注意:在发布这篇文章之前,我读了用谓词限制流,但是我不知道如何调整这个答案来解决我的问题。任何帮助将不胜感激。
问题内容: 我有一个清单清单: 我想从列表中删除所有不满足条件的元素。 因此,如果我想删除与之相对应的元素。 所以list_1将被修改为 我该如何选择性地做到这一点? 问题答案: 您也可以根据需要使用该条件。
主要内容:del:根据索引值删除元素,pop():根据索引值删除元素,remove():根据元素值进行删除,clear():删除列表所有元素在 Python 列表中删除元素主要分为以下 3 种场景: 根据目标元素所在位置的索引进行删除,可以使用 del 关键字或者 pop() 方法; 根据元素本身的值进行删除,可使用列表(list类型)提供的 remove() 方法; 将列表中所有元素全部删除,可使用列表(list类型)提供的 clear() 方法。 del:根据索引值删除元素 del 是 Py
问题内容: 我试图改变我的思维,以考虑功能性方法,最近遇到了一种情况,我需要从列表中选取元素,直到满足条件为止,而我找不到实现这一目标的简便方法。显然我还在学习。 说我有这个清单: 预先感谢您的输入 注意:在发布此内容之前,我阅读了通过谓词限制流,但是我看不到如何使该答案适应我的问题。任何帮助,将不胜感激谢谢。 问题答案: 一个选项使用需要两个函数的收集器,一个函数将字符串添加到列表,另一个函数合