PythonStudy1——Python 值拷贝 浅拷贝 深拷贝

拷贝:对值进行复制的过程

  # 值拷贝:应用场景最多
  ls = [1, 'abc', [10]]


  ls1 = ls # ls1直接将ls中存放的地址拿过来
  # ls内部的值发生任何变化,ls1都会随之变化


  ls2 = ls.copy() # 新开辟列表空间,但列表中的地址都是直接从ls列表中拿来
  # ls内部的可变类型值发生改变,ls2会随之变化


  ls3 = deepcopy(ls) # 新开辟列表空间,ls列表中的不可变类型的地址直接拿过来,但是可变类型的地址一定重新开辟空间
  # ls内部的所有类型的值发生改变,ls3都不会随之变化


ls1 = [300000000000000000000000000000000, 1, 2, [10, 20]]
值拷贝
ls2 = ls1
print(id(ls1), id(ls2))
ls1[0] = 30
print(ls1, ls2)
浅拷贝
ls3 = ls1.copy()
print(id(ls1), id(ls3))
ls1[0] = 30
print(ls1, ls3)
ls1[3][0] = 100
print(ls1, ls3)
del ls1[1]
print(ls1, ls1[1])

print(ls3, ls3[1])
深拷贝
from copy import deepcopy
ls4 = deepcopy(ls1)
print(ls1, ls4)
print(id(ls1), id(ls4))
print(">>>>>>>>>>>>", id(ls1[0]), id(ls4[0]))
print(id(ls1[-1]), id(ls4[-1]))
ls1[0] = 30
ls1[-1][0] = 100
print(ls1, ls4)

 参考链接:https://www.cnblogs.com/xueli/p/4952063.html



原文地址:https://www.cnblogs.com/tingguoguoyo/p/10732487.html