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的Django框架中的数据过滤功能
Jul 17 Python
Python中基本的日期时间处理的学习教程
Oct 16 Python
浅析Python中元祖、列表和字典的区别
Aug 17 Python
Python中字符串的处理技巧分享
Sep 17 Python
python中类变量与成员变量的使用注意点总结
Apr 29 Python
python利用dir函数查看类中所有成员函数示例代码
Sep 08 Python
Python 用matplotlib画以时间日期为x轴的图像
Aug 06 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
Feb 07 Python
python3爬虫中异步协程的用法
Jul 10 Python
Python二元算术运算常用方法解析
Sep 15 Python
Python Selenium库的基本使用教程
Jan 04 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
Jan 27 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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
PHP数组交集的优化代码分析
2011/03/06 PHP
php环境下利用session防止页面重复刷新的具体实现
2014/01/09 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
PHP对象的浅复制与深复制的实例详解
2017/10/26 PHP
基于PHP实现发微博动态代码实例
2020/12/11 PHP
JS查看对象功能代码
2008/04/25 Javascript
jquery提示 "object expected"的解决方法
2009/12/13 Javascript
javascript中的float运算精度实例分析
2010/08/21 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
2016/04/17 Javascript
Angular 2应用的8个主要构造块有哪些
2016/10/17 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
2017/01/08 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
详解vue 实例方法和数据
2017/10/23 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
在JS循环中使用async/await的方法
2018/10/12 Javascript
使用python实现对元素的长截图功能
2019/11/14 Python
Python3的socket使用方法详解
2020/02/18 Python
pytorch中的inference使用实例
2020/02/20 Python
Python如何重新加载模块
2020/07/29 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
求职简历中个人的自我评价
2013/12/01 职场文书
小学毕业家长寄语
2014/01/19 职场文书
人事任命书格式
2014/06/05 职场文书
买房协议书范本
2014/10/23 职场文书
入党转正申请报告
2015/05/15 职场文书
小学新课改心得体会
2016/01/22 职场文书
高中英语教学反思范文
2016/03/02 职场文书
Python jiaba库的使用详解
2021/11/23 Python