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实现文件名批量替换和内容替换
Mar 20 Python
Python中解析JSON并同时进行自定义编码处理实例
Feb 08 Python
利用python求相邻数的方法示例
Aug 18 Python
pyqt5自定义信号实例解析
Jan 31 Python
解决phantomjs截图失败,phantom.exit位置的问题
May 17 Python
python寻找list中最大值、最小值并返回其所在位置的方法
Jun 27 Python
PyCharm2019安装教程及其使用(图文教程)
Sep 29 Python
Python猜数字算法题详解
Mar 01 Python
Python函数参数定义及传递方式解析
Jun 10 Python
python获取linux系统信息的三种方法
Oct 14 Python
教你如何用Python实现人脸识别(含源代码)
Jun 23 Python
Python requests用法和django后台处理详解
Mar 19 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
最令PHP初学者们头痛的十四个问题
2007/01/15 PHP
MyEclipse常用配置图文教程
2014/09/11 PHP
PHP不使用递归的无限级分类简单实例
2016/11/05 PHP
PHP微信分享开发详解
2017/01/14 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
判断在css加载完毕后执行后续代码示例
2014/09/03 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
JS高仿抛物线加入购物车特效实现代码
2017/02/20 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
Vue自定义指令写法与个人理解
2019/02/09 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
jquery向后台提交数组的代码分析
2020/02/20 jQuery
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
编写多线程Python服务器 最适合基础
2018/09/14 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
python实现双色球随机选号
2020/01/01 Python
css3教程之倾斜页面
2014/01/27 HTML / CSS
手机业务员岗位职责
2013/12/13 职场文书
病媒生物防治方案
2014/05/13 职场文书
小学班主任心得体会
2016/01/07 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
看完这篇文章获得一些java if优化技巧
2021/07/15 Java/Android