深浅拷贝, 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 查看是不是一个值,主要还是通过内存地址来判断的
  • == 判断两边的值是不是相等
posted @ 2019-02-01 23:58  小萍瓶盖儿  阅读(131)  评论(0编辑  收藏  举报