「Python基础」浅复制与深复制

本文转载自此文章-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']]

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容