1、循环删除list

1 ll = [1,1,32,4,3,2,3,2,4,6,4,5,6,7,8]
2 for i in ll:
3 if i % 2 !=0:
4 ll.remove(i)
5 print(ll)

执行结果如下:

该段代码有问题,循环删除list,会导致下标错乱

解决办法1,代码如下:

1 import copy
2
3 ll = [1,1,32,4,3,2,3,2,4,6,4,5,6,7,8]
4 ll2 = copy.deepcopy(ll)#深拷贝
5 for i in ll2:
6 if i % 2 !=0:
7 ll.remove(i)
8 print(ll)

执行结果如图所示:

2、深拷贝、浅拷贝

深拷贝是指的拷贝之后,操作不影响原有变量

浅拷贝是指拷贝之后,对新的变量进行操作会影响原有变量

copy出来之后,如果内存地址不变,肯定是浅拷贝
copy.deepcopy 肯定是深拷贝,而且只有这一种是深拷贝
copy.copy()
list.copy()
dict.copy()这三种可能地址不一样,但是也是浅拷贝

 1 a = [1, 32, 4, 3, 2, 3, 2, 4, 6, 4, 5, 6, 7, 8, {'key1': 'value1'}]
2 a1 = a #浅拷贝
3
4 a2 = copy.deepcopy(a)#深拷贝
5
6 a3 = a.copy()#浅拷贝
7
8 a4 = copy.copy(a)#浅拷贝
9
10 a.pop(1)
11 a[-1]['key1'] = 'xiaoxiaolin'
12
13 print(id(a),a)
14 print(id(a1),a1)
15 print(id(a2),a2)
16 print(id(a3),a3)
17 print(id(a4),a4)

执行结果如图所示:

a和a1内存地址一样,肯定是浅拷贝

a和a2内存地址不一样,且操作a对a2没有影响,是深拷贝

a和a3,a4内存地址不一样,但是深层次的操作a,对a3,a4有影响,是浅拷贝

最新文章

  1. Android系列:res之shape制作
  2. C#高级编程笔记 Day 4, 2016年9月 12日(接口)
  3. php中echo(),print(),print_r()之间的区别
  4. C++ 开篇
  5. 激活神器 KMSAuto Net 2015 v1.3.8
  6. myeclipse打红叉
  7. 使用shell从DB2数据库导出数据
  8. [HIHO1041]国庆出游(DFS, bitset)
  9. flv视频播放器代码
  10. js的数据处理记录
  11. std::ofstream由二进制流写文件的问题
  12. UICollectionView 讲解-备
  13. Android 中如何使用动画
  14. GDG shanghai programming one hour by JavaScript
  15. MariaDB的安装与启动
  16. centos查看自启动服务
  17. nodeJS之crypto模块公钥加密及解密
  18. OpenModelica中simulate的用法
  19. 配置hive元数据数据库
  20. HDU-1002.大数相加(字符串模拟)

热门文章

  1. SSM框架的配置整合(包含配置文件代码)
  2. opentack - 本地化
  3. lms框架应用服务接口和服务条目详解
  4. YOLOv4 资源环境配置和测试样例效果
  5. Python-selenium,切换句柄及封装
  6. SpringAOP 原理解析
  7. th:insert、th:replace、th:include抽取和引用页面公共片段、传参等
  8. 【题解】codeforces 219D Choosing Capital for Treeland 树型dp
  9. TestNG 组测试
  10. WPF中ListView控件怎么添加新的tiem时滚动条一直在最下面