Python细节(一)深浅拷贝

时间:2021-01-02 19:48:57

深浅拷贝

只要涉及拷贝,就会涉及创建新对象

浅拷贝,会创建一个新的容器,列表中的元素和原列表的元素用的是同一个内存空间

第一种方法:从头切到尾,完整的复制一份

lst = [1,2,3,4]
lst1 = lst[:]           #从头切到尾,重新完整的复制了一份
print(lst,lst1)

第二种方法:.copy

lst1 = lst.copy()       #创建对象的速度,会很快

深拷贝,拷贝的是表面,和深层的东西

不可变的数据类型和原列表指向的是同一个内存空间,可变数据类型会创建一个新的空间

import copy
lst = [1,2,[3,4],5]
lst2 = copy.deepcopy(lst)       #copy.deepcopy 深拷贝
print(id(lst1[1]),id(lst[1])    #肯定不一样d's

1.赋值没有创建新对象,多个变量共享一个内容

2.浅拷贝,会创建新对象,新对象里面的内容不会被拷贝

3.深拷贝,创建一个一摸一样完全新的对象 不可变对象,还是原来的,可变对象创建新的