Python随笔---深浅拷贝

python

Python中为了避免某些方法的副作用(拷贝后有时更改原有数据),故存在有深浅拷贝的存在

浅拷贝导入copy方法集,使用copy_copy的方法进行

深拷贝一样导入copy方法集,使用copy_deepcopy方法进行

实例如下:

import copy

l1={'k1':'alex','k2':'jack','k3':['gender','opem']}

l2=copy.copy(l1)

l3=copy.deepcopy(l1)

l1['k1']='like' #更改原有数据值

print(l1)

print(l2)

print(l3)

运行结果:

{'k1': 'like', 'k2': 'jack', 'k3': ['gender', 'opem']} #数据更改

{'k1': 'alex', 'k2': 'jack', 'k3': ['gender', 'opem']}

{'k1': 'alex', 'k2': 'jack', 'k3': ['gender', 'opem']}

同样的若是更改深层的value中列表的值:

import copy

l1={'k1':'alex','k2':'jack','k3':['jack','Tom']}

l2=copy.copy(l1)

l3=copy.deepcopy(l1)

l1['k3'][0]='like' #更改深层列表内值

print(l1)

print(l2)

print(l3)

运行结果:

{'k1': 'alex', 'k2': 'jack', 'k3': ['like', 'Tom']} #数据更改

{'k1': 'alex', 'k2': 'jack', 'k3': ['like', 'Tom']} #数据更改

{'k1': 'alex', 'k2': 'jack', 'k3': ['jack', 'Tom']}

  以上结果可知:

     1:深浅拷贝都是针对内存的(虽然没有运行内存位置),占不同内存

     2:若原有数据仅修改一层,则深浅拷贝后数据均不更改

     3:若原有数据中修改深层,则浅拷贝数据变化,深拷贝数据不变

     4:可使用[:]对元素切片,但不可应用到字典类型

以上是 Python随笔---深浅拷贝 的全部内容, 来源链接: utcz.com/z/387499.html

回到顶部