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


Posted in Python onJanuary 07, 2021

一.问题描述

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

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

运行结果:

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

二.问题分析

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

三.解决方法

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

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

运行结果:

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

2.filter

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

a = [1,2,3,4,5,6,7,8]
b = filter(lambda x: x>5,a)
print(list(b))

运行结果:

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

3.列表解析

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

运行结果:

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

4.倒序删除

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

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:
    pass
  else:
    a.remove(a[i])
print(id(a))
print('--------------------')
print(a)

运行结果:

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

到此这篇关于详解Python遍历列表时删除元素的正确做法的文章就介绍到这了,更多相关Python遍历列表删除元素内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python数组遍历的简单实现方法小结
Apr 27 Python
python for循环输入一个矩阵的实例
Nov 14 Python
把pandas转换int型为str型的方法
Jan 29 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
python批量下载抖音视频
Jun 17 Python
Pytorch实现各种2d卷积示例
Dec 30 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
Feb 05 Python
Python *args和**kwargs用法实例解析
Mar 02 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
Mar 04 Python
Python实现GIF图倒放
Jul 16 Python
Pycharm编辑器功能之代码折叠效果的实现代码
Oct 15 Python
使用Django框架创建项目
Jun 10 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 #Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
Jan 06 #Python
python 获取谷歌浏览器保存的密码
Jan 06 #Python
python实现PolynomialFeatures多项式的方法
Jan 06 #Python
pytorch中index_select()的用法详解
Jan 06 #Python
Python之京东商品秒杀的实现示例
Jan 06 #Python
Python实现小黑屋游戏的完整实例
Jan 06 #Python
You might like
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
基于jQuery实现响应式圆形图片轮播特效
2015/11/25 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
基于JavaScript实现无缝滚动效果
2017/07/21 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
js实现每日签到功能
2018/11/29 Javascript
Angular6 用户自定义标签开发的实现方法
2019/01/08 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
Python文件与文件夹常见基本操作总结
2016/09/19 Python
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
代码讲解Python对Windows服务进行监控
2018/02/11 Python
PyQt5实现下载进度条效果
2018/04/19 Python
Python实现的读写json文件功能示例
2018/06/05 Python
关于python下cv.waitKey无响应的原因及解决方法
2019/01/10 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
python实现栅栏加解密 支持密钥加密
2019/03/20 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
Python如何获取文件路径/目录
2020/09/22 Python
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
银行求职信个人范文
2013/12/16 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
先进单位申报材料
2014/12/25 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
浅谈MySQL之select优化方案
2021/08/07 MySQL
python数字图像处理实现图像的形变与缩放
2022/06/28 Python