Python浅拷贝
来源:互联网 发布:windows toolkit 2.5.3 编辑:程序博客网 时间:2024/06/05 18:23
浅拷贝
import copywill = ["Will", 28, ["Python", "C#", "JavaScript"]]wilber = copy.copy(will)print id(will)print willprint [id(ele) for ele in will]print id(wilber)print wilberprint [id(ele) for ele in wilber]will[0] = "Wilber"will[2].append("CSS")print id(will)print willprint [id(ele) for ele in will]print id(wilber)print wilberprint [id(ele) for ele in wilber]
运行结果为:
分析代码:
首先,依然使用一个will变量,指向一个list类型的对象
然后,通过copy模块里面的浅拷贝函数copy(),对will指向的对象进行浅拷贝,然后浅拷贝生成的新对象赋值给wilber变量
浅拷贝会创建一个新的对象,这个例子中”wilber is not will”
但是,对于对象中的元素,浅拷贝就只会使用原始元素的引用(内存地址),也就是说”wilber[i] is will[i]”当对will进行修改的时候
由于list的第一个元素是不可变类型,所以will对应的list的第一个元素会使用一个新的对象39758496
但是list的第三个元素是一个可不类型,修改操作不会产生新的对象,所以will的修改结果会相应的反应到wilber上
总结一下,当我们使用下面的操作的时候,会产生浅拷贝的效果:
使用切片[:]操作
使用工厂函数(如list/dir/set)
使用copy模块中的copy()函数
摘自:http://python.jobbole.com/82294/
阅读全文
0 0
- python深拷贝浅拷贝
- python-深拷贝,浅拷贝
- python浅拷贝深拷贝
- python深拷贝浅拷贝
- python浅拷贝 深拷贝
- python 深拷贝&浅拷贝
- python 浅拷贝&深拷贝
- Python浅拷贝
- python 的深拷贝和浅拷贝
- python list 浅谈深拷贝,浅拷贝
- Python的浅拷贝与深拷贝
- python/c++ 深拷贝与浅拷贝
- Python 深拷贝与浅拷贝
- Python深拷贝和浅拷贝
- Python的浅拷贝和深拷贝
- python 引用 浅拷贝 深拷贝
- Python中的浅拷贝与深拷贝
- python 浅拷贝和深拷贝
- 进程
- CSS属性提升
- 实践
- <jsp:include page="/header.jsp"></jsp:include> 引发的bug
- 快速排序
- Python浅拷贝
- Python-WSGI协议
- 【LeetCode】628. Maximum Product of Three Numbers
- java项目写yml配置文件时候需要注意的几个地方
- 联想拯救者安装固态硬盘重做系统
- 炉石兄弟免费版/破解版 0.3.1406.392
- 静态双向链表的多数组实现
- 二叉树
- Final有什么特点?