Python如何在循环内使用list.remove()

作者:jinfengJeff 时间:2023-06-07 09:11:33 

代码如下


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)

来源:https://www.cnblogs.com/jinfengJeff/p/10632815.html

标签:Python,循环,list,remove
0
投稿

猜你喜欢

  • go 下载非标准库包(部份包被墙了)到本地使用的方法

    2024-05-10 13:56:50
  • Python实现批量压缩文件/文件夹zipfile的使用

    2021-03-08 07:08:21
  • linux ubuntu中安装、卸载和删除python-igraph的方法教程

    2021-01-10 19:54:02
  • Python json 错误xx is not JSON serializable解决办法

    2021-06-25 21:58:05
  • sqlserver2017共享功能目录路径不可改的解决方法

    2024-01-17 13:58:26
  • Python使用ctypes调用C/C++的方法

    2023-09-01 21:27:47
  • MySQL动态字符串处理DYNAMIC_STRING

    2024-01-26 01:20:19
  • python 解决mysql where in 对列表(list,,array)问题

    2024-01-27 06:34:23
  • Python 抖音评论数据抓取分析

    2023-03-22 15:30:20
  • Django 解决上传文件时,request.FILES为空的问题

    2021-10-21 19:37:41
  • 在 Python 中利用Pool 进行多处理

    2022-03-07 13:10:36
  • 解决python3捕获cx_oracle抛出的异常错误问题

    2023-01-21 17:51:26
  • 5 种JavaScript编码规范

    2024-06-16 16:57:08
  • Python学习之基础语法介绍

    2022-03-22 22:08:54
  • Python基于域相关实现图像增强的方法教程

    2023-08-24 15:30:22
  • python lambda表达式在sort函数中的使用详解

    2021-09-22 02:07:56
  • ASP.NET中FCKEDITOR在线编辑器的用法

    2023-07-04 23:20:38
  • Python使用turtle库绘制小猪佩奇(实例代码)

    2021-09-21 08:45:30
  • PHP实现的登录,注册及密码修改功能分析

    2023-11-14 21:45:29
  • JavaScript中CreateTextFile函数

    2024-04-18 10:49:03
  • asp之家 网络编程 m.aspxhome.com