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:可使用[:]对元素切片,但不可应用到字典类型

相关文章:

  • 2022-12-23
  • 2021-10-13
  • 2021-11-24
  • 2021-04-12
  • 2021-10-04
  • 2021-11-09
  • 2021-08-27
猜你喜欢
  • 2021-10-19
  • 2021-08-05
  • 2021-06-20
  • 2021-07-04
  • 2021-05-25
  • 2022-02-10
相关资源
相似解决方案