我正在玩python中的浅拷贝。我遇到了一个我没想到的问题。
我的假设是浅拷贝是一个类的新实例,它引用了类中的对象。此行为如下所示。
>>> a = { 'a': 1, 'b':2, 'c': [[1,2],2,3,4,5,6] }
>>> c = copy.copy(a['c'])
>>> d = a['c']
>>> a['c'] is c
False
>>> a['c'][0] is c[0]
True
>>> a['c'] is d
True
>>> a['c'][0] is d[0]
True
令我惊讶的是以下内容。由于浅复制列表的元素是对列表中元素的引用,因此a
我假设当我更改可变的第一个元素时,它也会在a
.
>>> c[0] = [3,3]
>>> c
[[3, 3], 2, 3, 4, 5, 6]
>>> a
{'a': 1, 'c': [[1, 2], 2, 3, 4, 5, 6], 'b': 2}
>>> a['c'][0] is c[0]
False
我看到自从更改后第一个元素不再是a
.
我的问题:
如果我更改列表中的所有元素,它会类似于 deepcopy 吗?