详解Python遍历列表时删除元素的正确作法

这篇文章主要介绍了详解Python遍历列表时删除元素的正确作法,文中经过示例代码介绍的很是详细,对你们的学习或者工做具备必定的参考学习价值,须要的朋友们下面随着小编来一块儿学习学习吧html

一.问题描述

 这是在工做中遇到的一段代码,原理大概和下面相似(判断某一个元素是否符合要求,不符合删除该元素,最后获得符合要求的列表):python

   
  1. = [1,2,3,4,5,6,7,8]web

  2. for i in a:微信

  3. if i>5:网络

  4. passapp

  5. else:less

  6. a.remove(i)编辑器

  7. print(a)函数

运行结果:学习

二.问题分析

由于删除元素后,整个列表的元素会往前移动,而i倒是在最初就已经肯定了,是不断增大的,因此并不能获得想要的结果。

三.解决方法

1.遍历在新的列表操做,删除是在原来的列表操做

   
  1. = [1,2,3,4,5,6,7,8]

  2. print(id(a))

  3. print(id(a[:]))

  4. for i in a[:]:

  5. if i>5:

  6. pass

  7. else:

  8. a.remove(i)

  9. print(a)

  10. print('-------------------------')

  11. print(id(a))

运行结果:

2.filter

内建函数filter()官方文档参考:https://docs.python.org/3/library/functions.html#filter

   
  1. = [1,2,3,4,5,6,7,8]

  2. = filter(lambda x: x>5,a)

  3. print(list(b))

运行结果:

3.列表解析

   
  1. = [1,2,3,4,5,6,7,8]

  2. = [for i in a if i >5]

  3. print(b)

运行结果:

4.倒序删除

由于列表老是“向前移”,因此能够倒序遍历,即便后面的元素被修改了,尚未被遍历的元素和其坐标仍是保持不变的。

   
  1. = [1,2,3,4,5,6,7,8]

  2. print(id(a))

  3. for i in range(len(a)-1,-1,-1):

  4. if a[i] > 5:

  5. pass

  6. else:

  7. a.remove(a[i])

  8. print(id(a))

  9. print('--------------------')

  10. print(a)

运行结果:

到此这篇关于详解Python遍历列表时删除元素的正确作法的文章就介绍到这

  1. 欢迎你们点赞,留言,转发,转载,感谢你们的相伴与支持

    万水千山老是情,点个【在看】行不行

  2. *声明:本文于网络整理,版权归原做者全部,如来源信息有误或侵犯权益,请联系咱们删除或受权事

本文分享自微信公众号 - python教程(pythonjc)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索