变量n2的值为啥不是`[6]`?

变量n2的值为啥不是[6]?下列代码中两个n1不一样吗?

n1 = [1, 2, 3, 4, 5]  
n2 = n1 
n1 = [6]  
print(n2) 
阅读 2.8k
5 个回答

python的赋值只是指向赋值,你的第二行代码new = old,只是把一个变量名new也指向了数组[1,2,3,4,5]对应的栈,此时,old以及new这两个变量名都指向了这个数组,而你的第三行代码old = [6],则是会新建一个栈来保存[6],然后把old这个变量名指向这里。此时,new和old已经没有任何关系了。所以你输出来的结果应该就是[1,2,3,4,5]

看到下面的答案,随便说一下,在python里面new 并不是关键字。

图片描述

不多说,看上图!!!

n1 = [1, 2, 3, 4, 5]
n2 = n1
n1 = [6]
print(n2)

理一下
n1 = [1, 2, 3, 4, 5] // n1指向数组[1, 2, 3, 4, 5]的首地址
n2 = n1 // n1 和 n2 指向数组[1, 2, 3, 4, 5]的首地址
n1 = [6] // n1指向数组[6]的首地址

new 是关键字,new指向old数组

新手上路,请多包涵
n1 = [1, 2, 3, 4, 5]  
n2 = n1 
n1 = [6]  
print(n2) 

首先:我们把[1, 2, 3, 4, 5][6]分别看做是水果店里的苹果与香蕉,'n1'和'n2'是贴在水果上的标签。

  1. 当第一行代码执行的时候,我们给[1, 2, 3, 4, 5]这个苹果贴了一个叫做'n1'的标签,比如说'n1'这个标签上写着’4元一斤‘;
  2. 当第二行代码执行的时候,有一个新的标签叫'n2',上面写着‘又大又甜’四个字,n2 = n1执行后,我们就准备把'n2'这个标签也贴到某一个水果上面,但是贴到哪个上面呢,我们发现'n1'这个标签贴在了苹果上面,那么也把'n2'贴到苹果上面,现在苹果上面贴了两个标签'n1'和'n2';
  3. 当第三行代码执行时,我们就把'n1'这个标签从苹果上撕了下来,又贴到了香蕉上面,现在苹果上面只有‘又大又甜’的'n2'标签;
  4. 当第四行代码执行时,水果店老板问你:你把‘又大又甜’这个标签贴到哪个水果上面了?你告诉他是‘苹果’。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题