python字符重复,python异或运算符
python中有一个特殊的符号“*”,可以作为数值运算的乘法运算符,也可以作为对象的重复运算符。但是,当它用作重复运算符时,我们必须注意。
注意:*重复的对象具有相同的id,即它们指向内存中相同的地址。你必须注意每个对象的操作。
例如:
list=[范围(3)]*4
列表
[[0,1,2],[0,1,2],[0,1,2],[0,1,2]]上面初始化一个两级列表来模拟矩阵,是4X3。为了描述方便,这里的矩阵是a。
现在我想用下面的代码给A11赋值1:
List [0] [0]=1那么我们想要的结果应该是:
[[1,1,2],[0,1,2],[0,1,2],[0,1,2]]但不幸的是,我们得到的是:
[[1,1,2],[1,1,2],[1,1,2],[1,1,2]]这是怎么回事?为什么给A21赋值?为什么其他Ai1都相应改变了?
原因如下:
在文章的开头,我们已经说过*重复的对象具有相同的id,也就是指向内存中相同的地址,所以一定要注意每个对象的操作。
当我们重新初始化时,我们使用重复操作符 * 。当对对象重复操作时,该操作符将所有重复的对象指向同一个内存地址。所以当你改变其中一个值时,
其他值自然会被更新,python中的解释是以下命令和输出:
id(列表[0])
18858192
id(列表[1])
18858192
id(列表[2])
18858192
id(列表[3])
18858192
看,id都一样,说明这四个列表是同一个“列表”。
那么如果我们想模拟一个矩阵呢?除了有一个特殊的numpy包,你当然可以把新的列表一个接一个的追加到上面的列表,例如:
blist=[]
(4):
blist.append([jforjinrange(3)])
blist
[[0,1,2],[0,1,2],[0,1,2],[0,1,2]]所以,我们再来试试上面的赋值操作:
blist[0][0]=1
blist
[[1,1,2],[0,1,2],[0,1,2],[0,1,2]]
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。