Python 深浅拷贝

浅拷贝

a = [1, 2, 3, 4]
b = b.copy()         # 把 a 列表复制一份
print(b)

b[0] = 5             # 修改 b 列表的中的元素 
print(a)             # 打印 a 列表
print(b)             # 打印 b 列表

运行结果:

我们在这里看到 b 修改的元素并没有影响到 a 列表。

接下来我们把 a 列表的元素改一下再使用 copy 方法:

a = [[1, 2], 3, 4]   # a 列表中包含了一个列表
b = a.copy()
print(b)

b[0][0] = 8          # 修改 b 列表里面的元素
print(a)
print(b)

运行结果:

现在 a,b 列表中的元素都改变了
下面是图解,浅拷贝只是拷贝了列表元素中的第一层,更深层并没有被拷贝。这里 b 拷贝了 a[0] 的内存地址 0088,通过 b[0][0] 修改了元素。a[0],b][0] 的内存地址并没有发生改变。

深拷贝

import copy
a = [[1, 2], 3, 4]
b = copy.deepcopy(a)
print(b)

b[0][0] = 8
print(a)
print(b)

运行结果:

使用了深拷贝后,对于 b 列表的改变并不会影响到 a 列表。

发现一片不错的文章,大伙也可以进行参考:
http://www.cnblogs.com/yuanchenqi/articles/5782764.html

posted @ 2018-04-02 11:56  klvchen  阅读(235)  评论(0编辑  收藏  举报