python中有一个模块copy,deepcopy函数用于深拷贝,copy函数用于浅拷贝。要理解浅拷贝,必须先弄清楚python中的引用。
i=73 i+=2这里的‘=’表示引用。
m=[5,9] m+=[6]列表m的每个元素均是对象的引用。对象的生成,涉及到对应机制,如整形对象分为大整数对象和小整数对象,生成机制不同,这里不作详细阐述。
(1)没有限制条件的分片表达式(L[:])能够复制序列,但此法只能浅层复制。
(2)字典 copy 方法,D.copy() 能够复制字典,但此法只能浅层复制
(3)有些内置函数,例如 list,能够生成拷贝 list(L)
(4)copy 标准库模块能够生成完整拷贝:deepcopy,递归 copy
import copy aList=[[1,2],3,4] bList=copy.copy(aList) print aList print bList print id(aList) print id(bList) aList[0][0]=5 print aList print bList
import copy aList=[[1,2],3,4] bList=copy.copy(aList) print aList print bList print id(aList[1]) print id(bList[1]) aList[2]=5#变量的对象引用改变了而已 aList[0]=[0,1,1]#变量的对象引用改变了而已 print aList print bList
import copy aList=[[1,2],3,4] bList=aList cList=copy.copy(aList) dList=copy.deepcopy(aList) print aList print bList print cList print dList print id(aList) print id(bList) print id(cList) print id(dList) aList.append(5) aList[0].append('hello') print aList print bList print cList print dList
一入python深似海--浅拷贝与深拷贝,布布扣,bubuko.com
原文地址:http://blog.csdn.net/u010367506/article/details/31736033