python的变量仅仅是指向对象的标签,所以在操作列表的时候,list1 = list2这种做法只会复制一个标签,然后指向对象,并非生成一个新的对象。

大致有5中方法可以复制列表:

a = [1,2,3,[1]]
b= a[:]
c= list(a)
d = a *1
e = copy.copy(a)
f = copy.deepcopy(a)

再对a列表进行操作

a.append(12)
a[3].append(12)
print id(a),a
print id(b),b
print id(c),c
print id(d),d
print id(e),e
print id(f),f

各个复制方式的结果比较

41900952 [1, 2, 3, [1, 12], 12]
41899112 [1, 2, 3, [1, 12]]
41919792 [1, 2, 3, [1, 12]]
41889664 [1, 2, 3, [1, 12]]
41922192 [1, 2, 3, [1, 12]]
41900912 [1, 2, 3, [1]]

可以看出五个方式都可以复制列表,但是如果列表中含有子列表,b,c,d,e四个方式的子列表是指向a的对象上面,只有f方式是完全复制了一个新的列表

最新文章

  1. EF CodeFirst EntityTypeConfiguration 自关联映射配置
  2. andriod逆向实验截图
  3. 事务四大特征:原子性,一致性,隔离性和持久性(ACID)
  4. mssql查找备注(text,ntext)类型字段为空的方法
  5. uva 11997 K Smallest Sums 优先队列处理多路归并问题
  6. 超快速使用docker在本地搭建hadoop分布式集群
  7. POJ 3692 Kindergarten (二分图 最大团)
  8. Struts2 API的chm格式帮助文档制作教程
  9. 13年7月13日CF练习 Codeforces Round #147 (Div. 2)
  10. VisualSVN Server启动错误(0x8007042a)
  11. azkaban使用
  12. CSS 尺寸 (Dimension) 实例
  13. 深入浅出Mybatis技术原理与实战(杨开振)(带详细书签) PDF 下载 高清 完整版+源码
  14. 【伊利丹】Hadoop2.0 NN HA实验记录
  15. (原创)OpenStack服务如何使用Keystone(三)---详细配置Keystone中间件
  16. mvc 路由配置-学习
  17. 6-11 Level-order Traversal(25 分)
  18. LogHelp 日记分天记录,只记30天日记
  19. 视频video遇到一些坑
  20. 查看sdk

热门文章

  1. Mysql关键字之Group By(二)
  2. time zone list
  3. 在Spring+MyBatis组合中使用事务
  4. npm publish 一直报错 404
  5. 【Leetcode_easy】867. Transpose Matrix
  6. SpringCloud学习笔记:服务支撑组件
  7. 洛谷 题解 UVA247 【电话圈 Calling Circles】
  8. 在ensp上简单的配置交换机
  9. Ubuntu12.10添加matlab启动器
  10. jupyter notebook选择conda环境