python浅拷贝深拷贝
2016-03-21 09:25
459 查看
copy_list=list[:] 得到的是浅拷贝,即只能顶层拷贝,里面的嵌套不会复制一份。
请问现在a和b分别是多少?
答案:是 a 为 [8, [1, 9], 3],b 为 [0, [1, 9], 3]。 b的第二个元素也被改了。想不通看下面:
深拷贝方法如下:
int,float,long,str,tuple为不可变对象
list,set,dict为可变对象
不可变对象指的是值的不可变,所以它的每一次操作都会重建对象
打个比方:
这里虽然看上去a的值可以改变,但其实是创建了一个新的对象2,然后将a的标签贴到这个2的对象上,原来那个1还在那里等待垃圾回收。
a = [0, [1, 2], 3] b = a[:] a[0] = 8 a[1][1] = 9
请问现在a和b分别是多少?
答案:是 a 为 [8, [1, 9], 3],b 为 [0, [1, 9], 3]。 b的第二个元素也被改了。想不通看下面:
深拷贝方法如下:
import copy a = [0, [1, 2], 3] b = copy.deepcopy(a) a[0] = 8 a[1][1] = 9
int,float,long,str,tuple为不可变对象
list,set,dict为可变对象
不可变对象指的是值的不可变,所以它的每一次操作都会重建对象
打个比方:
a=1 a=2
这里虽然看上去a的值可以改变,但其实是创建了一个新的对象2,然后将a的标签贴到这个2的对象上,原来那个1还在那里等待垃圾回收。
相关文章推荐
- Python笔记——类定义
- Python 进阶——重访 list
- 关于python文件操作
- 统计文件内数据 Python
- python中pip的安装
- python中pip的安装
- Python 进阶——从 list 到 NumPy
- 基于随机游走的社团划分算法label progation 的python实现
- Python2.7字符编码详解
- Python 进阶—— list 的头插和尾插
- Python高级:细说Python浅拷贝和深拷贝
- Python高级:细说Python浅拷贝和深拷贝
- Python操作XML和TXT
- Python读取ini文件
- Python操作XML
- Python之isinstance
- Python体验(10)-图形界面之计算器
- Python多版本共存之pyenv
- python中数据的保存
- python编码及文件编ASCII,Unicode和UTF-8相关知识