Python_深浅拷贝

深浅拷贝

‘copy’和'='的区别:copy会开辟一个新的空间,而‘=’不会。

浅copy只会copy第一层,再里边的就进行共享了。

需要记住的是copy之后记住的是内存寻址地址,而浅copy时如果copy中有列表、字典等,记住的内存寻址是这个列表、字典的地址,也就是指向,当修改列表、字典中的东西时,记录的内存寻址没有发生改变,所以就会出现浅copy所描述的这种情况。

短暂感受:

# 修改字符串的时候没有发生变化
s_1 = [[1,2], 'mu', 'linux']
s_2 = s_1.copy()

s_2[1] = 'wj'
print(s_1)
print(s_2)


# 修改列表的时候发生了变化,证明s_1和s_2是有联系的
s_1 = [[1,2], 'mu', 'linux']
s_2 = s_1.copy()

s_2[0][1] = 3
print(s_1)
print(s_2)

深浅拷贝混合使用:

import copy
a = ['mu', 123, [6000,5000]]

b = copy.copy(a)
b[0] = 'lei'
b[1] = 456
b[2][1] -= 2000
print(a)
print(b)

c = copy.deepcopy(a)                    # 此处深copy时a[2][1]已经是3000了
c[0] = 'cao'
c[1] = 789
c[2][1] -= 1000
print(c)
print(a)
print(b)

 

posted @ 2017-11-24 15:42  隔壁王师傅  阅读(133)  评论(0编辑  收藏  举报