Python-基础-day4

 深浅copy                         

1、先看赋值运算

h1 = [1,2,3,['aihuidi','hhhh']]
h2 = h1
h1[0] = 111
print(h1)
print(h2)
#结果:
# [111, 2, 3, ['aihuidi', 'hhhh']]
# [111, 2, 3, ['aihuidi', 'hhhh']]
h1[3][0] = 'file'
print(h1)
print(h2)
#结果:
# [111, 2, 3, ['file', 'hhhh']]
# [111, 2, 3, ['file', 'hhhh']]

 

ps:对与赋值运算来说,h1和h2指向的是同一个内存地址,所以它们是完全一样的。

为什么要拷贝?

1
当进行修改时,想要保留原来的数据和修改后的数据

数字字符串 和 集合 在修改时的差异? (深浅拷贝不同的终极原因)

1
2
3
在修改数据时:
    数字字符串:在内存中新建一份数据
         集合:修改内存中的同一份数据

对于集合,如何保留其修改前和修改后的数据?

1
在内存中拷贝一份

对于集合,如何拷贝其n层元素同时拷贝?

1
深拷贝

2,浅拷贝copy。

对于浅copy来说,只是在内存中重新创建了开辟了一个空间存放一个新列表,但是新列表中的元素与原列表中的元素是公用的。

3,深拷贝deepcopy。

对于深copy来说,列表是在内存中重新创建的,列表中可变的数据类型是重新创建的,列表中的不可变的数据类型是公用的。

 

posted @ 2019-02-27 17:12  aihuidi  阅读(181)  评论(0编辑  收藏  举报