在学习for loop的时候,是否遇到过这样情况,在遍历列表的时候,无论是用remove方法还是通用del 不能删掉想删除的元素?

首先list中remove method 可以直接删除 想删掉的值,例:a=['h','z','j',1,2,3]->a.remove(h)->a.remove(1)->a=['z','j',,2,3]

del 通用方法呢 要使用统一的下标,通过下标来删掉对应的值,例:a=['h','z','j',1,2,3]->del a[0]->del a[4]->a=['z','j',1,3]

但是,我们把他放在for循环里是什么样呢?

本来我们想要的是,删除列表中每一个元素,但是为什么列表还会剩两个值?

因为具体过程如下:

1、当第一次删除后,后面的元素会前移,此时a=[2,3,4,5]#第一个元素可以正常删除
2、然后指针下一次会指向新列表的第二个元素(即初始状态的第三个位置),从而初始状态的第二个位置被跳过了,初始第三个位置被删除,接着后面的元素又再次前移(变成[2,4,5])

#指针对应的下标为2 ,因为发生位移,第二次遍历的时候i的值直接指向第二位,也是3
3、指针指向新列表的第三个元素,即初始状态的第5个元素5,然后5被删除了,因此只剩下[2,4]

#第一次:a=[1,2,3,4,5]->a=1 第二次:a=[2,3,4,5]->指针发生变法i=3 同理第三次i=5

如果数据量不是特别大的时候,可以尝试复制一份对应的数据,遍历旧数据的时候,删除新数据里的值,这样就实现了

这样就实现了删除列表,或者也可以建立新列表,每次遍历直接添加需要提取的元素

当然你要想删除列表,只需要clear method 就好了。

今天写的是,指针的问题,后面当然没有什么用,道理明白就好。

转载于:https://www.cnblogs.com/hongzejun/p/7900892.html

[PYTHON] for循环中关于列表list中remove method 不得不说的秘密相关推荐

  1. python 类中定义列表_Python3中的自定义列表类,具有

    我想用python3编写一个自定义列表类,就像在这个问题How would I create a custom list class in python?中一样,但与该问题不同,我想实现__get__ ...

  2. python socket多线程 获取朋友列表_python中的(多线程)套接字列表/数组

    我对python有点陌生.我正在尝试在一个程序中创建和使用一个套接字列表/数组.所以我声明了一个数组,如下所示:myCSocks = ['CSock1', 'CSock2', 'CSock3', 'C ...

  3. python数字排序_python按照列表元素中的数字大小排序

    [Human Sorting] 常见的python排序只需要一个sort或者sorted函数即可.但是默认采用的是字典序,这会带来一个问题,如果列表中的元素是字符串+数字组合,往往无法得到我们想要的排 ...

  4. python for循环九九乘法表_Python中的九九乘法表(for循环)

    用for循环写出的九九乘法表(包括函数的调用) #方向一 for i in range(1,10): for j in range(1,i+1): d = i * j print('%d*%d=%-2 ...

  5. python io流,Python io流会在列表理解中自动关闭吗?

    For example I have the following code: d = [l for l in open('a.txt', 'r')] After d is created, will ...

  6. css中去掉列表ul中的圆点

    去掉圆点只需要一句代码就好: ul {list-style-type: none; } list-style-type属性是设置列表前面标志的类型,详细信息可以查看这个链接 http://www.ru ...

  7. Python学习笔记19:列表 III

    Python学习笔记19:列表 III 其实这篇笔记标题应该是列表扩展,从列表开始,将涵盖Python中的序列容器. 关于列表的基础知识,可以看我的前两篇文章: Python学习笔记1:列表. Pyt ...

  8. python for 循环中使用 remove 删除列表中的元素

    python for 循环中使用 remove 删除列表中的元素 错误的代码 # !/usr/bin/python # encoding: utf-8 # -*- coding: utf8 -*- o ...

  9. python中的for语句涉及的序列可以是列表_Python中的列表与循环

    文章中的所有例子全部经过实际测试,可以直接使用.开发环境是python 3.8.5 条件和循环 本章的主要内容是Python的条件和循环语句.主要涉及if.else.elif.while.for.ra ...

最新文章

  1. 3年5000家,苏宁小店如何立足“中国第一O2O社区小店”?
  2. 5.Spring Security 短信验证码登录
  3. LiteIDE 编写Go的单元测试
  4. node js 技术架构_[视频] Node JS中的干净架构
  5. 在 Redis 上实现的分布式锁
  6. iPhone 7疯狂生产 苹果提升在印度存在感
  7. windows 自带计算器 calc 的使用
  8. (1)非对称加密——RSA——史上最通俗的小白可看懂!
  9. 南航计算机专业哪个校区,今天被南航拟录取了,写点干货留给后来人(学校选择+初试+复试)...
  10. vue项目引入阿里巴巴矢量图标库图标
  11. 微信聊天功能软件测试用例,软件测试用例实例之常见功能测试点
  12. SRE(运维工程师)的核心能力
  13. jsp页面使用大于号等
  14. 半导体储存器例题小试--十安辰
  15. 为什么要用大写L替换小写L(l),idea提醒literal ‘xxx‘ ends with lowercase ‘l‘
  16. python秒表游戏代码_在pygam游戏中添加秒表
  17. 小米watch s2功能介绍 小米watch s2测评值得买吗
  18. 微信小程序用canvas画图并分享
  19. jquery easyui 全部图标
  20. file:/usr/local/hive/iotmp/89de7dfe-8f26-4a6e-87b4-bacd16c2b2c8/hive_2021-11-05_05-06-07_555_3392062

热门文章

  1. jmeter ---实战(详解)
  2. web前端技术基础课程讲解之浅谈对soket的理解
  3. Java基础之面向对象的特征。
  4. JSP中meta http-equiv=pragma content=no-cache属性ttp-equiv功能介绍转载
  5. 编译 Apache Karaf 2.2.9遇到找不到jar包问题的解决方案
  6. 无需深厚技术背景,也可以做好系统和应用维护管理
  7. Vue为何采用异步渲染
  8. Js中String对象
  9. devops实践指南_DevOps:掌握这些便捷指南
  10. sysadmin默认密码_Sysadmin指南,开源电子邮件客户端,macOS应用程序,SELinux,Firefox扩展等...