详解Python遍历列表时删除元素的正确做法
作者:此生小会 发布时间:2023-04-06 18:42:53
标签:Python,遍历列表,删除元素
一.问题描述
这是在工作中遇到的一段代码,原理大概和下面类似(判断某一个元素是否符合要求,不符合删除该元素,最后得到符合要求的列表):
a = [1,2,3,4,5,6,7,8]
for i in a:
if i>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[:]))
for i in a[:]:
if i>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(lambda x: x>5,a)
print(list(b))
运行结果:
3.列表解析
a = [1,2,3,4,5,6,7,8]
b = [i for i in a if i >5]
print(b)
运行结果:
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)
运行结果:
来源:https://blog.csdn.net/cckavin/article/details/83618306


猜你喜欢
- 导语大家早上好哈!——有没有想我啊?木木子来啦,今日上线放一波大招给大家!刚学会了录制视频,之后的效果动态显示终于完美录制出来了!今天跟着小
- 毫无疑问,Google是当今世界上最成功的互联网公司之一,但是Google也曾推出过一些失败的实验品。还记得Google Accelerat
- 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技
- 前言K-Means 聚类算法的目标是将 n 个样本划分(聚类)为 K 个簇,在博文《OpenCV与机器学习的碰撞》中,我们已经学习利用 Op
- 最近做的一个项目对日期时间的处理比较多,最后整理到一个工具类里面,方便以后使用:1. 在utils文件夹下新建一个dateTimeUtil.
- 为了能够正常使用,先把所提供的global.asa文件放到该应用程序的根目录中。最简单的办法是把global.asa文件放到缺省Web网站的
- 1.tensor张量与numpy相互转换tensor ----->numpyimport torcha=torch.ones([2,5
- 富文本-图片上传html:<div class="layui-form-item layui-form-text"
- 1、es的批量插入这是为了方便后期配置的更改,把配置信息放在logging.conf中用elasticsearch来实现批量操作,先安装依赖
- 前言本文的github仓库地址为: 替换照片人物背景项目(模型文件过大,不在仓库中)由于模型文件过大,没放在仓库中,本文下面有模型下载地址。
- 日前,Mozilla 的 Arun Ranganathan 向 W3C 提交了一个草案,旨在推出一个 JavaScript API,让 Ja
- 很多小伙伴都会有这样的问题,说一个ip地址十分钟内之内注册一次,用来防止用户来重复注册带来不必要的麻烦逻辑:取ip,在数据库找ip是否存在,
- 官方文档的示例中没有我们习惯的日期格式,查了很多博客转换日期和时间戳也都是大概的能得到结果的方式,常将 datetime 和 time 两个
- 本文实例讲述了Python挑选文件夹里宽大于300图片的方法。分享给大家供大家参考。具体分析如下:这段代码需要用到PIL库。代码如下所示:i
- 本片博文主要介绍在Python3 环境下把用户名密码编码成字符串。代码如下:import base64def get_basic_auth_
- PIL和PillowPIL(Python Image Library)是一个非常流行的Python图像处理库,但自从2011年以来就没有更新
- 引言照例,我们先来一个场景~面试官:"知道事务的四大特性么?"你:"懂,ACID嘛,原子性(Atomicity
- 不知道您是否留意了,浏览本站时,浏览器右下角有一个标着top的黑色直角三角形,可以点击它返回到正在浏览的网页页眉。当滚动网页时,它的位置一直
- 如何加点盐(salt)?为了加强MD5的安全性,从而加入了新的算法部分即加盐值,加盐值是随机生成的一组字符串,可以包括随机的大小写字母、数字
- 系统环境:win10 开发环境:JetBrains PyCharm 2017.1.5 x64 Python版本:2.7假如我们有一个clas