python 遍历list删除元素_详解Python遍历列表时删除元素的正确做法
这篇文章主要介绍了详解Python遍历列表时删除元素的正确做法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
一.问题描述
这是在工作中遇到的一段代码,原理大概和下面类似(判断某一个元素是否符合要求,不符合删除该元素,最后得到符合要求的列表):
a=[1,2,3,4,5,6,7,8]
foriina:
ifi>5:
pass
else:
a.remove(i)
print(a)
运行结果:
二.问题分析
因为删除元素后,整个列表的元素会往前移动,而i却是在最初就已经确定了,是不断增大的,所以并不能得到想要的结果。
三.解决方法
1.遍历在新的列表操作,删除是在原来的列表操作
a=[1,2,3,4,5,6,7,8]
print(id(a))
print(id(a[:]))
foriina[:]:
ifi>5:
pass
else:
a.remove(i)
print(a)
print('-------------------------')
print(id(a))
运行结果:
2.filter
内建函数filter()官方文档参考:https://docs.python.org/3/library/functions.html#filter
a=[1,2,3,4,5,6,7,8]
b=filter(lambdax:x>5,a)
print(list(b))
运行结果:
3.列表解析
a=[1,2,3,4,5,6,7,8]
b=[iforiinaifi>5]
print(b)
运行结果:
4.倒序删除
因为列表总是“向前移”,所以可以倒序遍历,即使后面的元素被修改了,还没有被遍历的元素和其坐标还是保持不变的。
a=[1,2,3,4,5,6,7,8]
print(id(a))
foriinrange(len(a)-1,-1,-1):
ifa[i]>5:
pass
else:
a.remove(a[i])
print(id(a))
print('--------------------')
print(a)
运行结果:
到此这篇关于详解Python遍历列表时删除元素的正确做法的文章就介绍到这
欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
万水千山总是情,点个【在看】行不行
*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事
python 遍历list删除元素_详解Python遍历列表时删除元素的正确做法相关推荐
- 用于生成随机数的python标准库模块是_详解Python基础random模块随机数的生成
详解Python基础random模块随机数的生成 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: 详解Python基础random模块随机数的生成.txt ] ( ...
- [转载] python中for语句用法_详解Python中for循环的使用_python
参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...
- python函数的使用场景_详解python中strip函数的使用场景
python strip()函数 介绍,需要的朋友可以参考一下 函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm) 删除s字符串中开头.结尾处,位于 rm删除序列的字符 s.l ...
- python可变参数的实验性_详解Python的三种可变参数
可变参数 可变参数应该最简单,在C/C++和Java等语言中都有,就是用*号来表示,例如 def testArg(*arg) 你可以传入任意多个元素(包括0)到参数中,在函数内部会自动认为是一个元组或 ...
- python什么是可变参数_详解Python的三种可变参数
可变参数 可变参数应该最简单,在C/C++和Java等语言中都有,就是用*号来表示,例如 def testArg(*arg) 你可以传入任意多个元素(包括0)到参数中,在函数内部会自动认为是一个元组或 ...
- python中break怎么用_详解Python中break语句的用法
详解Python中break语句的用法 在Python中的break语句终止当前循环,继续执行下一个语句,就像C语言中的break一样. break最常见的用途是当一些外部条件被触发,需要从一个循环中 ...
- python中for语句用法_详解Python中for循环的使用_python
这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...
- python三维图切片提取_详解Python二维数组与三维数组切片的方法
如果对象是二维数组,则切片应当是x[:]的形式,里面有一个冒号,冒号之前和之后分别表示对象的第0个维度和第1个维度: 如果对象是三维数组,则切片应当是x[::],里面有两个冒号,分割出三个间隔,三个间 ...
- python怎么设置七牛云_详解Python在七牛云平台的应用(一)
七牛云七牛云是国内领先的企业级云服务商.专注于以数据为核心的云计算业务,围绕富媒体场景推出了对象存储.融合CDN.容器云.大数据.深度学习平台等产品,并提供一站式视频云解决方案,同时打造简单,可信赖的 ...
最新文章
- python录入数据至ppt_用 Python 让你的 PPT 数据动起来
- 设计模式:观察者模式--Observer
- Centos 6安装python3.5
- PP生产订单成本的计划、控制和结算
- 16位汇编 int 10h和int 21h 显示字符串实例
- Docker学习五:Docker 数据管理
- nslookup get public/external IP
- 数据结构与算法之图的深度优先遍历(DFS)
- Open Distro 初探
- android - studio版本控制文件颜色代表意思
- linux换终端的背景颜色,肿么调整linux终端背景颜色
- no javac in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
- java简单播放器涉及与实现
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
- html的css样式大全,css样式有哪些?
- 博弈——ICE公平组合游戏(简单整理结论)
- 中芯微和高通410的随身WiFi哪种好,随身WiFi怎么刷机
- Radiant:AR/VR显示系统测试比2D屏难在哪?
- linux字体加粗,CSS Fonts(字体)介绍
- 2022HZWA比武题 服务器集群分析