Python 深拷贝new=copy.deepcopy(old)、浅拷贝new=old.copy()与非拷贝new_ma=m
new_ma,m=[],[]
new_ma=m。此为非拷贝改变new_ma或ma都会改变另一个数列
1 w=[] 2 ma=[1,2] 3 b=[2,1] 4 for i in range(2): 5 w=w+[ma[i]]*b[i] 6 print(w) 7 8 ma=[1,2] 9 new_ma=ma#这是非拷贝方法。修改任何一个列表都会影响到另一个。 10 ma.append("new") 11 ma[0]=ma[0]+1 12 new_ma[0]=new_ma[0]+1 13 #赋值后对旧队列操作,影响新列表;对新队列操作影响新队列 14 print(ma,new_ma ) 15 16 ma=[1,2] 17 copy_ma=ma.copy() 18 ma=ma+["1"] 19 #ma=[2,3] 20 ma[0]=ma[0]+1 21 copy_ma[0]=copy_ma[0]+10 22 print(ma,copy_ma)#copy后对old队列操作不影响新队列。#浅拷贝 23 24 from copy import copy 25 ma=[1,2,[1,2]] 26 copy_ma=copy(ma)#浅拷贝,只对第一层实现深拷贝 27 ma=ma+["1"] 28 ma[0]=ma[0]+1 29 copy_ma[0]=copy_ma[0]+10 30 copy_ma[2][0]=copy_ma[2][0]+10 31 print(ma,copy_ma) 32 33 import copy 34 ma=[1,2,[1,2]] 35 copy_ma=copy.deepcopy(ma)#深拷贝,无论多少层,无论什么形式,新列表都与原来无关。 36 ma[0]=ma[0]+1 37 copy_ma[0]=copy_ma[0]+10 38 copy_ma[2][0]=copy_ma[2][0]+10 39 print(ma,copy_ma)
输出结果