代码:
以上代码表示a于b在计算机中的索引是一样的地方,只是用不同的形式去表现出来的,这种情况下,如果改变b中的值,那么a中的值也改变了。
可以用id来看索引。
结果:这就反应出Python中如果一个东西等于另外一个东西,是把其索引赋过去了,也就是指针。
关于浅copy
结果:
以上结果反应出用copy.copy的方式不是吧a的索引赋给c(从输出False可以反应出来),而是在硬盘上新开辟出一块地方,这块
新开辟出来的地方和a的地方是不一样的,也就是地址不同,然后把a地址里面的数据复制给新开辟出来的地方来填。
关于浅copy更深入的理解:
代码:
结果:
以上结果说明,用copy.copy赋值过来的东西完全的地址是不一样的,而各个元素的地址是相同的,在这种情况下,若改变
a中一维的值,c中一维的值不会改变,若改变a中二维里面的某一个值,c中对应的值会改变。这就是copy的奇怪之处,也是其独特作用。
综合来说:当使用浅拷贝时,python
只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已,这也就能说明为什么里面的值对于二维能够改变,而对于一维不能改变的道理了。
三、deepcopy
完全新个体,不会对原对象产生任何影响。
有篇文章写得很好:这里