python数组的赋值和拷贝
2016-12-17 23:13
176 查看
直接看demo
numpy 有 copy()函数, list没有,需导入copy库
ref: http://python.jobbole.com/82294/
Python中对象的赋值都是进行对象引用(内存地址)传递。
使用copy.copy(),可以进行对象的浅拷贝,它复制了对象,但对于对象中的元素,依然使用原始的引用, 但是当改变的list的元素是不可变类型,所以will对应的list的第一个元素会使用一个新的对象。
如果需要复制一个容器对象,以及它里面的所有元素(包含元素的子元素),可以使用copy.deepcopy()进行深拷贝。
对于非容器类型(如数字、字符串、和其他’原子’类型的对象)没有被拷贝一说。
numpy 有 copy()函数, list没有,需导入copy库
>>> a = np.array([1,2,3]) >>> b = np.array([4,5,6]) >>> (a==b).all() #比较两个数组元素是否都相等, 可以用于k-means False >>> c=a >>> (a==c).all() True >>> c[0] = 10 #等号这种赋值相当对象引用(内存地址)传递,改变c, a也跟着变了,所有不管怎么改都是true >>> (a==c).all() True >>> a array([10, 2, 3]) >>> c array([10, 2, 3]) >>> d = a.copy() #这是浅拷贝 >>> (a==d).all() True >>> a array([10, 2, 3]) >>> d[0] =20 >>> (a==d).all() False >>> d array([20, 2, 3]) >>> a array([10, 2, 3])
ref: http://python.jobbole.com/82294/
Python中对象的赋值都是进行对象引用(内存地址)传递。
使用copy.copy(),可以进行对象的浅拷贝,它复制了对象,但对于对象中的元素,依然使用原始的引用, 但是当改变的list的元素是不可变类型,所以will对应的list的第一个元素会使用一个新的对象。
如果需要复制一个容器对象,以及它里面的所有元素(包含元素的子元素),可以使用copy.deepcopy()进行深拷贝。
对于非容器类型(如数字、字符串、和其他’原子’类型的对象)没有被拷贝一说。
相关文章推荐
- 对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
- Python中赋值、浅拷贝与深拷贝
- python中的赋值、浅拷贝和深拷贝
- python数组复制拷贝的实现方法
- Python中的对象赋值、浅拷贝与深拷贝
- Python的赋值,浅拷贝与深拷贝
- python的赋值、浅拷贝和深拷贝
- python 赋值、深浅拷贝、作用域
- python赋值和深浅拷贝
- Python中的赋值、浅拷贝、深拷贝介绍
- python中的浅拷贝与赋值不同
- python的赋值、浅拷贝和深拷贝
- python的浅拷贝,深拷贝和赋值
- python赋值和拷贝----一切皆对象,参数皆引用
- python数组复制拷贝的实现方法
- python基础(5):深入理解 python 中的赋值、引用、拷贝、作用域
- 深入理解 python 中的赋值、引用、拷贝、作用域
- python的直接赋值不会拷贝,只相当于变量的一个别名
- python实现给数组按片赋值的方法
- Python对象赋值、浅拷贝和深拷贝