鱼C论坛

 找回密码
 立即注册
查看: 1733|回复: 6

[已解决]Python第11、12节列表:赋值问题

[复制链接]
发表于 2020-5-30 19:23:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>> list1 = [1, 3, 2, 9, 7, 8]
>>> list2 = list1
>>> list1.sort()
>>> list1
[1, 2, 3, 7, 8, 9]
>>> list2
[1, 2, 3, 7, 8, 9][code]



>>> old = [1,2,3,4,5]
>>> new = old
>>> old =[6]
>>> print(new)
[1, 2, 3, 4, 5]
[/code]
以上两份代码,为什么将 list1 赋值给 list2 之后,对 list1 排序,list2 也进行了排序;而第二份代码,将 old 赋值给 new 之后,对 old 重新赋值,new 却不变?
最佳答案
2020-5-30 19:29:35
你把变量名理解为存在栈区,赋值结果理解为存在堆区。

1、list1由栈区指向堆区[1,3,2,9,7,8],

list2也由栈区指向堆区[1,3,2,9,7,8]。

所以两者实际上指向的是同一个堆区的内存地址。



2、old由栈区指向堆区[1,2,3,4,5],new也由栈区指向堆区[1,2,3,4,5]。

old重新改了指向,由栈区指向堆区[6].

new的指向仍旧是堆区的[1,2,3,4,5]。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-30 19:29:35 | 显示全部楼层    本楼为最佳答案   
你把变量名理解为存在栈区,赋值结果理解为存在堆区。

1、list1由栈区指向堆区[1,3,2,9,7,8],

list2也由栈区指向堆区[1,3,2,9,7,8]。

所以两者实际上指向的是同一个堆区的内存地址。



2、old由栈区指向堆区[1,2,3,4,5],new也由栈区指向堆区[1,2,3,4,5]。

old重新改了指向,由栈区指向堆区[6].

new的指向仍旧是堆区的[1,2,3,4,5]。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-31 07:22:41 | 显示全部楼层
赋值就相当于重新建立了一个同名列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-31 09:21:31 | 显示全部楼层
heidern0612 发表于 2020-5-30 19:29
你把变量名理解为存在栈区,赋值结果理解为存在堆区。

1、list1由栈区指向堆区[1,3,2,9,7,8],

sort 相当于把堆区的内容改变了?
对old 重新赋值,原来的堆区依然在那不变,只是old 指向了新的堆区?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-31 09:26:17 | 显示全部楼层
帅飞 发表于 2020-5-31 09:21
sort 相当于把堆区的内容改变了?
对old 重新赋值,原来的堆区依然在那不变,只是old 指向了新的堆区?


1、sort只是个方法,指向的还是原来的堆区。只是简单的把堆区的内容排列了下而已。

2、是的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-31 09:41:59 | 显示全部楼层
heidern0612 发表于 2020-5-31 09:26
1、sort只是个方法,指向的还是原来的堆区。只是简单的把堆区的内容排列了下而已。

2、是的。

好的,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-4 10:45:54 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-11 14:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表