相对于其他传统编程语言,Python有一个比较奇怪的特性,即在复制对象时,有浅拷贝(shallow copy)和深拷贝(deep copy)两种方式。 浅拷贝和深拷贝只和复合对象相关。复合对象指的是包含对象的对象,如列表(list)、类实例(class instance)等。简单类型的对象(int、float、string等)不存在浅拷贝和深拷 贝的说法。 color1...
Out[8]:[1,2,['haha',4]]In[9]:cop1# 浅拷贝的元素变了Out[9]:[1,2,['haha',4]]In[10]:cop2# 深拷贝的元素没变Out[10]:[1,2,[3,4]] 以上我们分为进行了,shallow copy(浅拷贝)-> cop1 和deep copy(深拷贝)-> cop2 为什么浅拷贝的元素变了呢,如果有兴趣,你会发现在一维数组中,浅...
我们发现,虽然用的是二维数组的下标,结果不仅仅我们的第1行第0列被赋值,而且所有其他行的第0列也跟着赋值了。这是什么原因呢? 问题就处在我们的初始化的方法上。 深拷贝和浅拷贝 在python 中,对一个list后面用 乘号 再加上 数字 的方法来初始化一个list,实际上是对这个list进行了浅拷贝(shallow copy),在py...
所以正确的代码应该使用切片来进行列表的拷贝: a = [1,2,3] b = a[:]# 使用切片进行列表拷贝 b[0] =10# 此时 a 和 b 是两个不同的对象 二维列表引发的思考:列表的本质 好的,现在我们确定切片能够进行列表的拷贝。那我们就能心安理得地改动新的列表了吗?请看二维列表(二维数组): a = [[1,2,3...
浅拷贝:id(c)->>> 4394180400 深拷贝:id(d)->>> 4394180400 1. 2. 3. 4. 如果a的值被更改,只有a本身的id会改变,bcd都不变。 对象是一个引用 首先,元组,数组,字典,类等的本质都是引用,或称之为“指针”,每个引用指向的实体都是有其相应地址的,比如这里的“亚丝娜”在内存中有一个具体的地址,而[...
(2)查看数组的属性 (3)文件读写操作 ▲文件中存储读取一个数据 ▲文件中存储读取两个数据 ▲文件中存储数据压缩文件大小 压缩文件前数据文件为674B,压缩文件后535B ▲文件读写数据txt和cvs格式 创建文件txt格式 需要对数据文件的格式和分隔符等进行定义,否则出现的是科学计数法 ...
深拷贝和浅拷贝 我们暂时不介绍,只需要记住 二维数组的初始化,除非必要,否则尽量不要使用这种方式,而是使用下面介绍的方式。通过列表生成式,基于一维数列生成二维数组l1 = [ [8] * 6for i in range(4) ][8] * 6 是一个一维数列 [8,8,8,8,8,8]for i in range(4),相当于把 [8] * 6 ...
5.2 二维数组 5.3 花式索引和索引技巧 使用索引数组进行索引 为什么变与不变? 6 拷贝与视图 6.1 完全不复制 6.2 视图或浅拷贝 6.3 深拷贝 6.4 深拷贝的用武之地 7 线性代数 7.1 单位矩阵 7.2 矩阵相乘 7.3 矩阵求逆,特征值,特征向量,秩 8 数组拼接 ...
numpy中可以使用array函数创建数组: import numpy as np np.array([1,2,3]) # 输出:array([1, 2, 3]) 4、如何区分一维、二维、多维? 判断一个数组是几维,主要是看它有几个轴(axis)。 一个轴表示一维数组,两个轴表示二维数组,以此类推。 每个轴都代表一个一维数组。 比如说,二维数组第一个轴里的每...
但是,这里的复制3次并不是深拷贝,所以 a 中的三个子列表实际上是指向同一个对象的引用。所以修改...