Python如何在循环内使用list.remove()
作者:jinfengJeff 时间:2023-06-07 09:11:33
代码如下
dat=['1', '2', '3', '0', '0', '0']
for item in dat:
if item == '0':
dat.remove(item)
print(dat)
#按要求是把'0'都删掉的,输出结果是['1', '2', '3', '0'] ??
首先,remove(x) 移除的是序列首次碰到的元素x
理解:
遍历列表,item每一次都会变化,可以想象有一个指针指向后一个元素,指针是递增的,从头元素到尾元素直至遍历完。
容易想到指针 0 --> 1 --> 2 --> 3
到第四个元素(dat[3]), dat[3]=='0',dat.remove(item), dat=['1','2','3','0','0'] #列表现在有五个元素
继续:
指针指向第五个元素(dat[4]),dat[4]=='0',dat.remove(item), dat=['1','2','3','0'] #列表现在有四个元素
继续:
指针指向(查找)下一个元素(第六个),哎? 此时dat列表只剩下四个元素,找不到第六个,自然就结束循环了!
得出:
列表的增删操作最好不要在for循环里做,迭代内容随着循环而改变了,这样既不安全也没必要,
换句话说,就是在循环的时候,不要让循环体的(指针/索引)啥的发生变化。
解决:
可以通过复制一个新的表来做删除操作
dat=['1', '2', '3', '0', '0', '0']
d = dat.copy()
for item in dat:
if item == '0':
d.remove(item)
print(d)
来源:https://www.cnblogs.com/jinfengJeff/p/10632815.html
标签:Python,循环,list,remove
0
投稿
猜你喜欢
go 下载非标准库包(部份包被墙了)到本地使用的方法
2024-05-10 13:56:50
Python实现批量压缩文件/文件夹zipfile的使用
2021-03-08 07:08:21
linux ubuntu中安装、卸载和删除python-igraph的方法教程
2021-01-10 19:54:02
Python json 错误xx is not JSON serializable解决办法
2021-06-25 21:58:05
sqlserver2017共享功能目录路径不可改的解决方法
2024-01-17 13:58:26
Python使用ctypes调用C/C++的方法
2023-09-01 21:27:47
MySQL动态字符串处理DYNAMIC_STRING
2024-01-26 01:20:19
python 解决mysql where in 对列表(list,,array)问题
2024-01-27 06:34:23
Python 抖音评论数据抓取分析
2023-03-22 15:30:20
Django 解决上传文件时,request.FILES为空的问题
2021-10-21 19:37:41
在 Python 中利用Pool 进行多处理
2022-03-07 13:10:36
解决python3捕获cx_oracle抛出的异常错误问题
2023-01-21 17:51:26
5 种JavaScript编码规范
2024-06-16 16:57:08
Python学习之基础语法介绍
2022-03-22 22:08:54
Python基于域相关实现图像增强的方法教程
2023-08-24 15:30:22
python lambda表达式在sort函数中的使用详解
2021-09-22 02:07:56
ASP.NET中FCKEDITOR在线编辑器的用法
2023-07-04 23:20:38
Python使用turtle库绘制小猪佩奇(实例代码)
2021-09-21 08:45:30
PHP实现的登录,注册及密码修改功能分析
2023-11-14 21:45:29
JavaScript中CreateTextFile函数
2024-04-18 10:49:03