Python-遍历列表时删除元素的正确做法

一.问题描述

因为删除元素后,整个列表的元素会往前移动,而i却是在最初就已经确定了,是不断增大的,所以并不能得到想要的结果。
问题现象如下:

a = [1, 2, 3, 4, 5, 6, 7, 8]
for i in a:if i > 5:a.remove(i)
print(a)

运行结果:

[1, 2, 3, 4, 5, 7]

本来想要删除a中比5大的元素,但是因为6删除后,后面的元素前移了,索引变小,但是i的值却还是不断增加,就造成了这种结果

遍历列表时删除元素的正确做法如下:

  • 方式一:
    遍历在新的列表操作,删除是在原来的列表操作
a = [1,2,3,4,5,6,7,8]
print(id(a))
print(id(a[:]))
for i in a[:]:if i>5:a.remove(i)
  • 方式二:列表解析
a=[1,2,3,4,5,6,7,8]
b = [i for i in a if i <= 5]
print(b) # [1, 2, 3, 4, 5]
  • 方式三:倒序删除 因为列表总是‘向前移’,所以可以倒序遍历,即使后面的元素被修改了,还没有被遍历的元素和其坐标还是保持不变的
a=[1,2,3,4,5,6,7,8]
print(id(a))
for i in range(len(a)-1,-1,-1):if a[i]>5:a.remove(a[i])
print(a) # [1, 2, 3, 4, 5]

Python - 遍历列表时删除元素的正确做法相关推荐

  1. python 遍历list删除元素_详解Python遍历列表时删除元素的正确做法

    这篇文章主要介绍了详解Python遍历列表时删除元素的正确做法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 一.问题描述 这是 ...

  2. Python遍历列表时删除元素的正确做法

    先看两种错误遍历删除演示 错误演示一:要求删除除了4以外的元素 lis = [1,2,3,4] for i in lis:print(i)print("删除前",lis,id(li ...

  3. Python遍历列表时删除元素的几种方法

    问题来源: 删除列表中的指定元素 描述: 输入一个整数列表,并输入一个整数x,删除列表中所有值为x的数,再输出列表. 问题代码: a = list(eval(input())) x = eval(in ...

  4. Python遍历列表时删除元素

    无论是使用for还是while,当在从前往后遍历的同时删除列表中的元素时,都会发生些问题. 要从lst = [1,4,0,1,5,0,3,5]中删除所有0元素,有两个比较好的方法: 1 使用filte ...

  5. [转】Python--遍历列表时删除元素的正确做法

    转自:https://blog.csdn.net/cckavin/article/details/83618306 一.问题描述 这是在工作中遇到的一段代码,原理大概和下面类似(判断某一个元素是否符合 ...

  6. Python语法糖——遍历列表时删除元素

    Python的for可以遍历一个List,但是在遍历的过程中删除元素常常会得到意想不到的结果甚至程序出现异常,例如: lst = [1, 1, 0, 2, 0, 0, 8, 3, 0, 2, 5, 0 ...

  7. Python遍历列表时其中的删除元素_CodingPark编程公园

    遍历列表时其中的删除元素 删除列表中的元素我们通常会用 .remove( ) 因为删除元素后,整个列表的元素会往前移动,而i却是在最初就已经确定了,是不断增大的,所以并不能得到想要的结果. 所以会造成 ...

  8. python 遍历列表,并且将元素拼接的技巧

    创建列表: ? 1 2 >>> music = ["Abba","Rolling Stones","Black Sabbath&qu ...

  9. Python之列表list删除元素

    本文上下文代码 person_dev_group = ["徐强","倍总","航神","大牛","tom&qu ...

最新文章

  1. 浅谈JavaScript 函数作用域当中的“提升”现象
  2. 20180530更新
  3. Mac OS X 中快速访问系统根目录的四种方法
  4. 马云在《赢在中国》对创业者的经典点评
  5. L1-040 最佳情侣身高差-PAT团体程序设计天梯赛GPLT
  6. Drool7s kmodule的作用--系列02课
  7. Linux安全加固的常用方法
  8. javaweb学生选课系统
  9. STM32F407移植FreeModbus中遇到接收最后一个字节是0xff或0xfe的解决方法
  10. 毕业设计必备案例:Python开发桌面程序——各种版本学生信息管理系统
  11. 目前在读学生的Java学习之路
  12. first season twenty-third episode,Ben was born!!!,Hi Ben???
  13. 手机gif图片怎么压缩变小?gif动图怎样缩小?
  14. 西南大学统考英语计算机有答案吗,西南大学1806课程[0002]《英语》机考A卷答案参考...
  15. Colab提示使用限额,这方法你用了吗?
  16. Kotlin-简约之美-基础篇(三):基本控制语句
  17. EndNote删除标记的高亮或者标记
  18. 本原多项式 M序列和AES不可约多项式
  19. PostgreSQL学习PDF书
  20. GTA5如何快速进入线上模式战局?GTA5线上模式进不去怎么办?

热门文章

  1. 【python接口自动化-requests库】【三】优化重构requests方法
  2. linux下last与lastb命令详解
  3. 苏宁易购唱共享之歌,共享干衣、共享数据、共享快递盒为哪般?
  4. Android批量图片载入经典系列——使用LruCache、AsyncTask缓存并异步载入图片
  5. ASP.NET伪静态 UrlRewrite(Url重写) 实现和配置
  6. 【4K HDR】2020年东京圣诞灯会/
  7. 华为云MySQL数据库外网使用
  8. 如何在六个月或更短的时间内成为DevOps工程师(三):版本控制
  9. Chrome控制台中network底部概要参数
  10. java中什么是释放已经持有的锁_java多线程什么时候释放锁