python数组的赋值和拷贝

来源:互联网 发布:徐州蹦花网络 编辑:程序博客网 时间:2024/05/01 01:01

直接看demo

numpy 有 copy()函数, list没有,需导入copy库

>>> a = np.array([1,2,3])>>> b = np.array([4,5,6])>>> (a==b).all() #比较两个数组元素是否都相等, 可以用于k-meansFalse>>> c=a>>> (a==c).all()True>>> c[0] = 10  #等号这种赋值相当对象引用(内存地址)传递,改变c, a也跟着变了,所有不管怎么改都是true>>> (a==c).all()True>>> aarray([10,  2,  3])>>> carray([10,  2,  3])>>> d = a.copy() #这是浅拷贝>>> (a==d).all()True>>> aarray([10,  2,  3])>>> d[0] =20>>> (a==d).all()False>>> darray([20,  2,  3])>>> aarray([10,  2,  3])

ref: http://python.jobbole.com/82294/
Python中对象的赋值都是进行对象引用(内存地址)传递。
使用copy.copy(),可以进行对象的浅拷贝,它复制了对象,但对于对象中的元素,依然使用原始的引用, 但是当改变的list的元素是不可变类型,所以will对应的list的第一个元素会使用一个新的对象。
如果需要复制一个容器对象,以及它里面的所有元素(包含元素的子元素),可以使用copy.deepcopy()进行深拷贝。
对于非容器类型(如数字、字符串、和其他’原子’类型的对象)没有被拷贝一说。

0 0
原创粉丝点击