python字符重复,python异或运算符

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: