今天刷题发现python中的二维数组直接复制使用起来修改其中一个的数据,另外一个也会跟着改变
aList = [[],[0]]
bList=aList
aList.append( [0, 1] )
print ("A List : ", aList)
print ("B List : ", bList)
结果:
A List : [[], [0], [0, 1]]
B List : [[], [0], [0, 1]]
查资料发现果然不能如此复制,网上给到的建议是切块复制,修改后:
aList = [[],[0]]
bList=aList[:]
#bList=aList.copy() 也可
aList.append( [0, 1] )
print ("A List : ", aList)
print ("B List : ", bList)
结果:
A List : [[], [0], [0, 1]]
B List : [[], [0]]
一维列表可以这样解决,但是二维列表修改其中的一维列表元素,会导致复制的列表跟着改变
aList = [[],[0]]
bList=aList[:]
#bList=aList.copy() 同样会跟着一起改变
aList[0].append(1)
print ("A List : ", aList)
print ("B List : ", bList)
结果:
A List : [[1], [0]]
B List : [[1], [0]]
解决方法:深度拷贝
import copy
aList = [[],[0]]
bList=copy.deepcopy(aList)
aList[0].append(1)
print ("A List : ", aList)
print ("B List : ", bList)
A List : [[1], [0]]
B List : [[], [0]]
|