在Python中如何深度复制列表对象?

在python中,默认情况下,只是传址,不是深度复制。如下例所示,变量a和变量b只是互为别名,指向都是内存中的同一个位置。

>>> a = [ 0, 1, 2 ]
>>> a
[0, 1, 2]
>>> b = a
>>> b
[0, 1, 2]
>>> b[1] = "zhuanfou"
>>> b
[0, 'zhuanfou', 2]
>>> a
[0, 'zhuanfou', 2]

在python中,若想深度复制列表对象,该怎么办呢?

喜欢这个问题 | 分享 | 新建回答

回答

冯纪忠雄

Feb 21, 2019
1 赞

使用python的内置模块copy中的deepcopy方法,即可实现对列表对象(list)的深度复制

>>> import copy
>>> a = [ 0, 1, 2 ]
>>> b = copy.deepcopy( a )
>>> b[1] = "zhuanfou"
>>> b
[0, 'zhuanfou', 2]
>>> a
[0, 1, 2]




东方不败

Feb 21, 2019
0 赞

使用python的内置模块copy中的deepcopy方法即可实现深度复制

>>> import copy
>>> a = [ 0, 1, 2 ]
>>> b = copy.deepcopy( a ) # 这里使用deepcopy进行深度复制
>>> b[1] = "zhuanfou"
>>> b
[0, 'zhuanfou', 2]
>>> a
[0, 1, 2]