当前位置: 代码迷 >> 综合 >> python深拷贝与浅拷贝
  详细解决方案

python深拷贝与浅拷贝

热度:32   发布时间:2023-09-28 05:41:16.0
import copy
a = [1, 2, 3, [4, 5, 6, [7, 8, 9]]]
# 浅拷贝
b = copy.copy(a)
# 深拷贝
c = copy.deepcopy(a)print(id(a))
print(id(b))
print(id(c))# 修改a list的值
a[0] = 10
a[3].append(2)
a[3].append(11111)print(a)# 浅拷贝:直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变
# copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变
print(b)# 深拷贝:深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变
print(c)"""
程序运行结果
1642407388992   # a,b,c的id均不一样
1642414166976
1642407337088[10, 2, 3, [4, 5, 6, [7, 8, 9], 2, 11111]]  # a,原始数据改变
[1, 2, 3, [4, 5, 6, [7, 8, 9], 2, 11111]]   # b,浅拷贝数据也改变
[1, 2, 3, [4, 5, 6, [7, 8, 9]]]             # c,深拷贝数据没有发生改变 """
  相关解决方案