不是说切片可以避免浅拷贝的吗???
下面这种方法切片了啊,为什么还是浅拷贝啊???请大侠指教
Python 多维数组 浅拷贝
[解决办法]
[[0]*4这个地方你都没保存,当然看不出来l是引用还是拷贝了
另外创建后的对象是否为原对象的引用或者是拷贝,可以用内置的id()函数查看,下面演示了切片是一个拷贝,而非引用
a = range(5)
print a,id(a)
l = a[:]
print l,id(l)
[解决办法]
浅拷贝是指切片的元素和原来列表中的元素一样(只拷贝地一层),但列表是新的列表。
In [322]: l = [0, pow(2, 100), '0'*1000, set()]
In [323]: l2 = l[:]
In [324]: map(id, l)
Out[324]: [14391312, 38078688, 37056256, 30727656]
In [325]: map(id, l2)
Out[325]: [14391312, 38078688, 37056256, 30727656]
In [326]: print id(l), id(l2)
38131040 38255648