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中多线程的创建及基本调用方法
Jul 08 Python
在 Python 应用中使用 MongoDB的方法
Jan 05 Python
深入理解Python对Json的解析
Feb 14 Python
python生成n个元素的全组合方法
Nov 13 Python
Python 输入一个数字判断成绩分数等级的方法
Nov 15 Python
Python qrcode 生成一个二维码的实例详解
Feb 12 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
Feb 14 Python
python 装饰器功能与用法案例详解
Mar 06 Python
Python生成器next方法和send方法区别详解
May 30 Python
Python绘制K线图之可视化神器pyecharts的使用
Mar 02 Python
Django实现在线无水印抖音视频下载(附源码及地址)
May 06 Python
Python创建SQL数据库流程逐步讲解
Sep 23 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
一个基于PDO的数据库操作类
2011/03/24 PHP
php操作csv文件代码实例汇总
2014/09/22 PHP
PHP中执行cmd命令的方法
2014/10/11 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
jquery 实现的全选和反选
2009/04/15 Javascript
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
js 异步操作回调函数如何控制执行顺序
2013/12/24 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
bootstrap改变按钮加载状态
2014/12/01 Javascript
jquery实现点击变换导航样式的方法
2015/08/31 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
2016/06/15 Javascript
修改ligerui 默认确认按钮的方法
2016/12/27 Javascript
jQuery实现复制到粘贴板功能
2017/02/11 Javascript
ElementUI Tag组件实现多标签生成的方法示例
2019/07/08 Javascript
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
python字符串对其居中显示的方法
2015/07/11 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
Django实现学员管理系统
2019/02/26 Python
python利用openpyxl拆分多个工作表的工作簿的方法
2019/09/27 Python
python中删除某个元素的方法解析
2019/11/05 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
一套C++笔试题面试题
2012/06/06 面试题
法律专业实习鉴定
2013/12/22 职场文书
教师作风整顿个人剖析材料
2014/10/10 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
施工安全员岗位职责
2015/04/11 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫