本文转载自此文章-python 深复制和浅复制,如果侵权,请联系本人,本人收到后会立刻删除。
对于 Python,有引用、浅复制和深复制的区别,所以使用时需注意。
# “赋值”属于直接引用,共享同一地址。
>>> list1 = ['a','b',['ab','ba']]
>>> list2 = list1
>>> list2[0] = 'c'
>>> print(list1)
['c', 'b', ['ab', 'ba']]
# “切片”属于浅复制,字列表改动的内容如果不是父列表中的子列表,则父列表不受影响
>>> list1 = ['a','b',['ab','ba']]
>>> list2 = lst1[:]
>>> list2[0] = 'c'
>>> print(list1)
['a', 'b', ['ab', 'ba']]
>>> print(list2)
['c', 'b', ['ab', 'ba']]
>>> list2[2][1] = 'd'
>>> print(list1)
['a', 'b', ['ab', 'd']]
>>> print(list2)
['c', 'b', ['ab', 'd']]
# copy.copy(list) 也属于浅复制,同切片
>>> import copy
>>> list1 = ['a','b',['ab','ba']]
>>> list2 = copy.copy(list1)
>>> list2[2][0] = 'c'
>>> print(list1)
['a', 'b', ['c', 'ba']]
# copy.deepcopy(list) 属于深复制,不管怎么改动都不受影响
>>> import copy
>>> list1 = ['a','b',['ab','ba']]
>>> list2 = copy.deepcopy(list1)
>>> list2[2][0] = 'c'
>>> print(list1)
['a', 'b', ['ab', 'ba']]