|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
>>> old = [1, 2, 3, 4, 5]
>>> new = old
>>> old = [6]
>>> print(new)
这个为什么打印的是[1,2,3,4,5]??
不是相当于new的指针指向old么 不应该是[6]么?
为什么old排序的话 new会跟着变 重新赋值就不会变?
本帖最后由 Twilight6 于 2020-5-14 09:24 编辑
这个就有关id的问题了,python中每个变量都有id地址
你可以调用 id(变量名) 就可查询该变量的id地址 ,同个id地址的源头相同
只要id源头本身一发生改变,关联这个ip的所有变量都会随之改变
前提是同id
old = [1, 2, 3, 4, 5]
new = old
你这里old 和 new 在这之前 id 地址都是相同的
但是到这时候:是把一个[6]重新赋值给了old 而不是在他本身的列表上进行改变
就相当于old = [6] 覆盖了你之前的 old = [1,2,3,4,5] 而且id地址变了
所以后来的new 和 old 没有关系了 new 还是 原本的id ,只是old 被你重新赋予了一个值,等于更换了一个id地址
所以 打印 new 结果还是 [1,2,3,4,5]
但是为什么sort()排序可以一起改变呢?就是因为sort方法是在列表的本身上进行改变,id地址并不发生变化
所以当你使用sort 时候两者是关联的,一起发生改变
相同的还有remove()、append()、pop()等这些都是在列表本身上发生改变,并不会改变id地址
|
|