当前位置: 代码迷 >> 综合 >> Python中的浅拷贝(shallow copy)和深度拷贝(deep copy)区别
  详细解决方案

Python中的浅拷贝(shallow copy)和深度拷贝(deep copy)区别

热度:27   发布时间:2023-12-26 14:31:12.0

先上结论:

①浅拷贝,是指重新分配一块内存,创建一个新的对象。里面的元素是原对象中子对象的引用。因此,如果原对象中的元素不可变,那倒无所谓;但如果元素可变,浅拷贝通常会带来一些"联动"。

②深度拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没有任何关联。

一句话结论:浅拷贝是对原对象中子对象的引用,而深拷贝对位子对象间无任何关联。

例子:

浅拷贝

l1 = [[1, 2], (30, 40)]
l2 = list(l1)
l1.append(100)
l1[0].append(3)l1
[[1, 2, 3], (30, 40), 100]l2
[[1, 2, 3], (30, 40)]l1[1] += (50, 60)
l1
[[1, 2, 3], (30, 40, 50, 60), 100]l2
[[1, 2, 3], (30, 40)]

深拷贝

import copy
l1 = [[1, 2], (30, 40)]
l2 = copy.deepcopy(l1)
l1.append(100)
l1[0].append(3)l1
[[1, 2, 3], (30, 40), 100]l2 
[[1, 2], (30, 40)]

  相关解决方案