Python如何在循环内使用list.remove()


Posted in Python onJune 01, 2020

代码如下

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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现判断一行代码是否为注释的方法
May 23 Python
python 利用for循环 保存多个图像或者文件的实例
Nov 09 Python
Python使用pandas对数据进行差分运算的方法
Dec 22 Python
python 自动批量打开网页的示例
Feb 21 Python
django ModelForm修改显示缩略图 imagefield类型的实例
Jul 28 Python
Python图像处理之图片文字识别功能(OCR)
Jul 30 Python
记一次django内存异常排查及解决方法
Aug 07 Python
Python基于tkinter canvas实现图片裁剪功能
Nov 05 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 Python
用python发送微信消息
Dec 21 Python
python中取整数的几种方法
Nov 07 Python
Python帮你解决手机qq微信内存占用太多问题
Feb 15 Python
IntelliJ 中配置 Anaconda的过程图解
Jun 01 #Python
解决python中import文件夹下面py文件报错问题
Jun 01 #Python
浅谈Python中文件夹和python package包的区别
Jun 01 #Python
python 通过文件夹导入包的操作
Jun 01 #Python
Python matplotlib可视化实例解析
Jun 01 #Python
python代码如何注释
Jun 01 #Python
python爬虫实例之获取动漫截图
May 31 #Python
You might like
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
PHP 错误之引号中使用变量
2009/05/04 PHP
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
php实现简易计算器
2020/08/28 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
JavaScript实现的数字与字符串转换功能示例
2017/08/23 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
详解基于Node.js的HTTP/2 Server实践
2018/05/31 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
Python实现的Kmeans++算法实例
2014/04/26 Python
盘点提高 Python 代码效率的方法
2014/07/03 Python
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
Python对切片命名的实现方法
2018/10/16 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
Numpy之reshape()使用详解
2019/12/26 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
深入了解Python 变量作用域
2020/07/24 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
HTML5中meta属性的使用方法
2016/02/29 HTML / CSS
淘宝网店营销策划书
2014/01/11 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
婚前协议书标准版
2014/10/19 职场文书
12.4全国法制宣传日活动方案
2014/11/02 职场文书
2015年毕业生自荐信范文
2015/03/24 职场文书
工作调动申请报告
2015/05/18 职场文书
导游词之杭州岳王庙
2019/11/13 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang