Python深浅拷贝

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python深浅拷贝相关的知识,希望对你有一定的参考价值。

浅拷贝:

a=[[1,2],3,4]

b=a.copy()

这里的b只会拷贝a的第一层,即[[],23]

因为a[0]是一个列表,可变对象,所以b copy的只是列表[]的内存地址,而不是[1,2]的内存地址。

如果修改[1,2]则a,b都会变,但是如果只修改2,3,只有一个变

 

import copy 
a=[[1,2],3,4]
b=copy.copy(a)

 

技术分享

 

b[0][0]=9

print(b)  #[[9,2],3,4]

print(a)  #[[9,2],3,4]

技术分享

 

深拷贝

import copy

a=[[1,2],3,4]
b=copy.deepcopy(a)   #b=[[[1,2],3,4]]
b[
0][0]=9
print(a)
print(b)

技术分享

 

不是深浅拷贝

a=[[1,2],3,4]
b=a
b[2]=9   #b指向a的那列表
print(a)
print(b)

 技术分享

 

 



 








以上是关于Python深浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章

我要学python之深浅拷贝原理

Python 的深浅拷贝 终于明白了

python深浅拷贝

python 深浅拷贝,集合 ,小数据池 操作

Python高级语法-深浅拷贝-总结(4.2.1)

Python深浅拷贝