在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中,若想深度复制列表对象,该怎么办呢?
冯纪忠雄
使用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]
东方不败
使用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]