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基础教程之lambda表达式使用方法
Feb 12 Python
Python常用正则表达式符号浅析
Aug 13 Python
浅谈python迭代器
Nov 08 Python
基于Python函数的作用域规则和闭包(详解)
Nov 29 Python
Python  Django 母版和继承解析
Aug 09 Python
解决python 上传图片限制格式问题
Oct 30 Python
在Python中实现函数重载的示例代码
Dec 12 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
Jun 18 Python
Python configparser模块封装及构造配置文件
Aug 07 Python
Python Pivot table透视表使用方法解析
Sep 11 Python
python使用yaml 管理selenium元素的示例
Dec 01 Python
Python基础之元组与文件知识总结
May 19 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
url decode problem 解决方法
2011/12/26 PHP
PHP中key和current,next的联合运用实例分析
2016/03/29 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
Nigma vs AM BO3 第一场2.13
2021/03/10 DOTA
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
jQuery EasyUI API 中文文档 - Pagination分页
2011/09/29 Javascript
js如何实现设计模式中的模板方法
2013/07/23 Javascript
JavaScript每天必学之事件
2016/09/18 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
AngularJS实现的JSONP跨域访问数据传输功能详解
2017/07/20 Javascript
JavaScript中各数制转换全面总结
2017/08/21 Javascript
Vue利用canvas实现移动端手写板的方法
2018/05/03 Javascript
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
原生js 实现表单验证功能
2021/02/08 Javascript
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
python将音频进行变速的操作方法
2020/04/08 Python
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
莫斯科大型旅游休闲商品超市:Camping.ru
2020/09/16 全球购物
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
给客户的道歉信
2014/01/13 职场文书
七年级历史教学反思
2014/02/05 职场文书
三分钟演讲稿范文
2014/04/24 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
优秀教师先进材料
2014/12/16 职场文书
升学宴来宾致辞
2015/07/27 职场文书
Canvas跟随鼠标炫彩小球的实现
2021/04/11 Javascript