realll_gasoul 发表于 2021-7-28 13:37:33

求助

old =
new = old
old.sort()
print(old)
print(new)

输出:
          

old =
new = old
old =
print(old)
print(new)

输出:



为什么用sort方法,new跟着old改变,直接赋值new就不变了呢{:10_291:}

逃兵 发表于 2021-7-28 13:51:48

变量名更像是一个标签贴在数据上

old =
new = old
old.sort()
print(old)
print(new)

此时的old和new都指向同一个列表,list.sort()函数是对列表自身进行改变

old和new依旧指向这个列表,不是new跟着old改变,而是new和old都随着他们指向的数据改变

old =
new = old
old =
print(old)
print(new)

在这段代码中,old和new先是都指向同一个列表
而后old去指向了别的列表old=
此时new和old指向不同的列表,不再有任何关系了

灰晨 发表于 2021-7-28 14:20:49

old =
new = old
print(id(new))
print(id(old))
old.sort()
print(id(new))
print(id(old))
old =
print(id(new))
print(id(old))
print(old)
print(new)
old =
创建一个列表,old指向该列表
new = old 使得 new 也指向同一个列表
列表是可变对象,old.sort()使得该列表内进行排序,但列表本身不变
相当于有一个盒子,old.sort()相当于将盒子里杂乱的东西摆好了,可盒子还是那个盒子,你往盒子里面加东西还是拿东西出来,盒子始终在那,没变
而old 和 new 都指向该盒子(列表),所以old和new是一样的,相当于两个标签,都贴在这个盒子上,old和new都代表该盒子
而old = 这个语句,则使得old 这个标签从原来的盒子拿走贴到了另一个盒子上了
所以old 和 new代表的就是不同的盒子了
页: [1]
查看完整版本: 求助