转自:https://blog.csdn.net/cckavin/article/details/83618306

一.问题描述

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

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

运行结果:

二.问题分析

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

三.解决方法

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

  1. a = [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. a = [1,2,3,4,5,6,7,8]
  2. b = filter(lambda x: x>5,a)
  3. print(list(b))

运行结果:

3.列表解析

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

运行结果:

4.倒序删除

因为列表总是“向前移”,所以可以倒序遍历,即使后面的元素被修改了,还没有被遍历的元素和其坐标还是保持不变的。

  1. a = [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)

运行结果:

转载于:https://www.cnblogs.com/langqi250/p/10770540.html

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

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

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

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

    Python-遍历列表时删除元素的正确做法 一.问题描述 因为删除元素后,整个列表的元素会往前移动,而i却是在最初就已经确定了,是不断增大的,所以并不能得到想要的结果. 问题现象如下: a = [1, ...

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

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

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

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

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

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

  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. groovy 使用java类_在java中使用groovy怎么搞 (java and groovy)
  2. 根据DNS的A记录负载均衡web服务请求
  3. 关于js复制文本信息(按钮级别)
  4. 03-iOS蓝牙架构搭建
  5. 【Linux系统编程】Linux 信号列表
  6. centos mysql 安装 yum源_Linux - CentOS 7 通过Yum源安装 MySql 5.7
  7. 脚本在流程中的性能影响
  8. linux进程获取执行文件路径,如何 获取linux进程的执行文件路径
  9. WsusAgent检测脚本
  10. linux 双线,linux 双线接入方案
  11. SqlServer中decimal(numeric )、float 和 real 数据类型的区别[转]
  12. 腾讯云服务器 - 定时备份MariaDB/MySQL
  13. input和output哪个是充电_html中input和output的区别?糊涂了搞不清了。哪位给解说下...
  14. Linux 用户空间审计系统
  15. macbook air 重置mysql密码
  16. 白话讲解Dubbo服务
  17. 扁平化easyUI default皮肤
  18. NOI openjudge 1.1 01:Hello, World!
  19. Socket实战——Teardrop代码编程
  20. Ubuntu中添加新硬盘

热门文章

  1. TEINet: Towards an Efficient Architecture for Video Recognition(AAAI2020)
  2. Python开发不可不知的虚拟环境
  3. [译]AppExtension编程指南:扩展基础1
  4. 如果调整临时文件限制temp_file_limit
  5. LeetCode 198, 213 House Robber
  6. 知道焊缝长度如何确定节点板尺寸_悦和分享:最全的关于焊缝无损检测的知识点...
  7. 最新战火互娱JS逆向分析实战教程
  8. 【第2篇】Python爬虫实战-PPT模板素材下载
  9. postman如何模拟Map参数请求呢?
  10. mysql数据库版本常用_推荐:经典版本常用MySQL的命令集锦_MySQL