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中正则表达式的用法实例汇总
Aug 18 Python
python中的多线程实例教程
Aug 27 Python
python实现批量改文件名称的方法
May 25 Python
浅析Python中yield关键词的作用与用法
Nov 29 Python
Python图形绘制操作之正弦曲线实现方法分析
Dec 25 Python
Python爬取qq空间说说的实例代码
Aug 17 Python
在python中实现对list求和及求积
Nov 14 Python
Python 炫技操作之合并字典的七种方法
Apr 10 Python
Python中bisect的用法及示例详解
Jul 20 Python
python爬取豆瓣电影排行榜(requests)的示例代码
Feb 18 Python
python爬虫利用代理池更换IP的方法步骤
Feb 21 Python
python图像处理 PIL Image操作实例
Apr 09 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 FPDF类库应用实现代码
2009/03/20 PHP
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
PHP构造函数与析构函数用法示例
2016/09/28 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
2012/12/10 Javascript
jQuery使用andSelf()来包含之前的选择集
2014/05/19 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
2016/03/25 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
使用webpack-dev-server处理跨域请求的方法
2018/04/18 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频
2018/12/05 DOTA
[01:52]2020年DOTA2 TI10夏季活动预告片
2020/07/15 DOTA
改进Django中的表单的简单方法
2015/07/17 Python
python基于phantomjs实现导入图片
2016/05/13 Python
Python3 assert断言实现原理解析
2020/03/02 Python
Python基于进程池实现多进程过程解析
2020/04/30 Python
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
梅西百货官网:Macy’s
2020/08/04 全球购物
环保专业大学生职业规划设计
2014/01/10 职场文书
中秋节超市促销方案
2014/01/30 职场文书
党员创先争优公开承诺书
2014/03/28 职场文书
给上级领导的感谢信
2015/01/22 职场文书
2015年银行信贷员工作总结
2015/05/19 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
Go 在 MongoDB 中常用查询与修改的操作
2021/05/07 Golang
【海涛教你打DOTA】黑鸟第一视角解说
2022/04/01 DOTA
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python