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字符转换
Sep 06 Python
跟老齐学Python之重回函数
Oct 10 Python
在Python中使用itertools模块中的组合函数的教程
Apr 13 Python
在Django的模型中执行原始SQL查询的方法
Jul 21 Python
Python中super函数的用法
Nov 17 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
Jan 17 Python
Python迭代器和生成器定义与用法示例
Feb 10 Python
win10下python3.5.2和tensorflow安装环境搭建教程
Sep 19 Python
Python tkinter和exe打包的方法
Feb 05 Python
python正则表达式实例代码
Mar 03 Python
python环境下安装opencv库的方法
Mar 05 Python
安装pyinstaller遇到的各种问题(小结)
Nov 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
PHP操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
PHP防范SQL注入的具体方法详解(测试通过)
2014/05/09 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
2019/09/30 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
javascript 面向对象编程基础 多态
2009/08/21 Javascript
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
js监控IE火狐浏览器关闭、刷新、回退、前进事件
2014/07/23 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
使用javaScript动态加载Js文件和Css文件
2015/10/24 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
PHP面试题附答案
2015/11/28 面试题
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
自我鉴定标准格式
2014/03/19 职场文书
进口业务员岗位职责
2014/04/06 职场文书