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使用rsa加密算法模块模拟新浪微博登录
Jan 22 Python
python3读取MySQL-Front的MYSQL密码
May 03 Python
python基础_文件操作实现全文或单行替换的方法
Sep 04 Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 Python
对python中的for循环和range内置函数详解
Apr 17 Python
在python中只选取列表中某一纵列的方法
Nov 28 Python
Python实现KNN(K-近邻)算法的示例代码
Mar 05 Python
如何通过Python实现标签云算法
Jul 02 Python
python使用梯度下降算法实现一个多线性回归
Mar 24 Python
如何用python处理excel表格
Jun 09 Python
解决c++调用python中文乱码问题
Jul 29 Python
python3爬虫GIL修改多线程实例讲解
Nov 24 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
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
2013/07/05 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
在HTML中插入JavaScript代码的示例
2015/06/03 Javascript
JavaScript中this详解
2015/09/01 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
举例讲解JavaScript中将数组元素转换为字符串的方法
2015/10/25 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
2016/01/23 Javascript
js实现商品抛物线加入购物车特效
2020/11/18 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
2016/05/25 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
实例讲解Python中的私有属性
2014/08/21 Python
TensorFlow实现创建分类器
2018/02/06 Python
python清除函数占用的内存方法
2018/06/25 Python
python 产生token及token验证的方法
2018/12/26 Python
Python面向对象封装操作案例详解
2019/12/31 Python
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
SneakerStudio英国:最佳运动鞋商店
2019/05/22 全球购物
电子信息专业学生自荐信
2013/11/09 职场文书
助人为乐模范事迹材料
2014/06/02 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python
vue 给数组添加新对象并赋值
2022/04/20 Vue.js
Win11 PC上的Outlook搜索错误怎么办?
2022/07/15 数码科技