最近程序出了一个很奇怪的问题,第一天傻用print来调试不成功,第二天换成断点调试,居然发现是List的复制出了问题。这才发现,如果一个对象a为list,那么将a赋值给b(b=a)此时相当于a,b共用一个内存空间,也可以理解为数组a的指针赋值给b。当b被改动时,a也同步被改动。可以用一个小实验说明
a=[1,4,3,5,1]
b=a
b.append(7)
print(a)
显示a=[1,4,3,5,1,7]
所以,如果想要将a赋值给b且放在一个单独的内存空间中,应该要写成b=a[:]才行
a=[1,4,3,5,1]
b=a[:]
b.append(7)
print(a)
此时显示a=[1,4,3,5,1]