s = [1,2,3,4,5]

for i in s:
s.remove(i)
print(s)
 

输出结果:[2, 4]

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

那么如何解决这个问题呢?

这里还得讲一下浅拷贝和深拷贝。

浅拷贝是什么呢?浅拷贝是在复制的时候只增加了一个指针,没有给其分配了内存空间,即你原来有一个a列表,你这个a里的值都有指向自己的指针,而且也有自己的内存空间a1,当浅拷贝a列表的时候得到一个A,这个A里的值都有指向自己的指针,但是他的的内存空间还是a1;这个时候你对无论是a还是A进行操作,都会改变内存空间a1里的值。

深拷贝是什么呢?深拷贝是在复制的时候不但增加了一个指针,而且还给其分配了内存空间,即你原来有一个a列表,你这个a里的值都有指向自己的指针,而且也有自己的内存空间a1,当深拷贝a列表的时候得到一个A,这个A里的值都有指向自己的指针,而且也有自己的内存空间A1;那么你再对原来的进行操作的时候可以去a里去寻找,在A里进行操作,由于都有自己的独立的内存空间,那么不会相互影响。就可以避免遗漏值,出现错误。直接贴代码:

import copy
s = [1,2,3,4,5]
s_new=copy.deepcopy(s)
for i in s_new:
s.remove(i)
print(s)

最新文章

  1. win系统盘下面安装RedHat Linux6.2ES
  2. XPath学习:轴(3)——descendant
  3. SQL Server Analysis Services 数据挖掘
  4. Android布局中的空格以及占一个汉字宽度的空格的实现
  5. 第七篇、Nginx Install On Mac
  6. UITableView 小节-备
  7. android 按字母搜索
  8. 微信小程序icon,text,progress标签的测试
  9. 1.Android中解析json程序代码
  10. 深度辨析 Python 的 eval() 与 exec()
  11. Java设计模式学习记录-备忘录模式
  12. Object类(根类)
  13. Django之名称空间
  14. 核心编程9 文件和文件的输入输出 (os模块)
  15. requirejs模块路径配置问题
  16. iOS开发中的小技巧 - 多张图合成一张
  17. Java高频面试题
  18. C# Hadoop学习笔记(二)—架构原理
  19. 洛咕 P3702 [SDOI2017]序列计数
  20. java虚拟机规范(se8)——java虚拟机结构(三)

热门文章

  1. hdoj--2187--悼念512汶川大地震遇难同胞——老人是真饿了(贪心)
  2. pycharm打开多个项目并存
  3. JSP-Runoob:JSP 教程
  4. Linux学习笔记之Linux shell脚本运行出现问题:bash: ./test: bin/sh: bad interpreter: No such file or directory
  5. [转]C语言常见错误总结1
  6. 折半枚举(双向搜索)poj27854 Values whose Sum is 0
  7. Linux环境下安装JDK并配置环境变量
  8. DHTML_____window对象的事件
  9. 使用Oracle的DBMS_SQL包执行动态SQL语句
  10. jQuery实现文字横向滚动效果