深浅拷贝, id / is / ==
阅读目录:
浅拷贝
浅拷贝:拷贝的是第一层元素
l = [1,2,[1,2],6,8] l1 = l[:] #此处进行了浅拷贝print(id(l),id(l1),id(l[2]),id(l1[2]))
执行结果:2018847831560 2018848648776 2018847831432 2018847831432
以上结果反映出,浅拷贝只拷贝了第一层元素,其ID会发生变化,对于第二层的列表,浅拷贝之后ID还是没有变化。
深拷贝
深拷贝:拷贝所有元素,开辟新的空间存放,跟原来的完全没有关系
import copy l = [1,2,[1,2],6,8] l1 = copy.deepcopy(l) print(id(l),id(l1),id(l[2]),id(l1[2]))
执行结果:1840927877832 1840927879112 1840927877640 1840927879048
以上结果说明:深拷贝会拷贝所有的元素,其第二层的ID也会发生变化
相关题:
a = [1,2]
a[1] =a
print(a[1])
执行结果:[1,[...]]
id / is /==
- id 查看内存地址
- is 查看是不是一个值,主要还是通过内存地址来判断的
- == 判断两边的值是不是相等