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 相关文章推荐
采用Psyco实现python执行速度提高到与编译语言一样的水平
Oct 11 Python
Python multiprocessing.Manager介绍和实例(进程间共享数据)
Nov 21 Python
Python基于有道实现英汉字典功能
Jul 25 Python
python开发中module模块用法实例分析
Nov 12 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
Jul 11 Python
python实现12306火车票查询器
Apr 20 Python
zookeeper python接口实例详解
Jan 18 Python
python实现停车管理系统
Nov 30 Python
Python使用matplotlib 画矩形的三种方式分析
Oct 31 Python
python requests抓取one推送文字和图片代码实例
Nov 04 Python
Prometheus开发中间件Exporter过程详解
Nov 30 Python
python 使用tkinter与messagebox写界面和弹窗
Mar 20 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
关于mysql 字段的那个点为是定界符
2007/01/15 PHP
php将会员数据导入到ucenter的代码
2010/07/18 PHP
php中session_unset与session_destroy的区别分析
2011/06/16 PHP
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
js控住DOM实现发布微博效果
2016/08/30 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
2017/10/21 Javascript
浅析从vue源码看观察者模式
2018/01/29 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
js实现适配移动端的拖动效果
2020/01/13 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
关于vue 项目中浏览器跨域的配置问题
2020/11/10 Javascript
Vue看了就会的8个小技巧
2021/01/21 Vue.js
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
用Python给文本创立向量空间模型的教程
2015/04/23 Python
Python 功能和特点(新手必学)
2015/12/30 Python
Python命令行解析模块详解
2018/02/01 Python
Python paramiko模块的使用示例
2018/04/11 Python
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
python list转矩阵的实例讲解
2018/08/04 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
PyQT5速成教程之Qt Designer介绍与入门
2020/11/02 Python
东南亚地区最大的购物网站Lazada新加坡站点:Lazada.sg
2016/07/17 全球购物
运动会口号8字
2014/06/07 职场文书
会计求职简历自我评价
2015/03/10 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书