鱼C论坛

 找回密码
 立即注册
查看: 1268|回复: 4

pythod的数据结构

[复制链接]
发表于 2018-3-3 23:25:17 | 显示全部楼层 |阅读模式

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

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

x
a = [1, 2, 3]
b = a
a = [4, 5, 6]
print(a)
print(b)


不理解为什么b还是被贴在[1, 2, 3],求助梳理。难道  b = a 这里发生的是深复制?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-3 23:38:41 | 显示全部楼层
>>> a = [1, 2, 3]
>>> id(a)
4582856 # 变量的地址
>>> b = a
>>> id(b)
4582856 # 变量的地址
>>> a = [4, 5, 6]
>>> id(a)
48996168 # 变量的地址
>>> id(b)
4582856 # 变量的地址

可以看得出,给变量赋值是重新开辟新的内存空间。 也就是甲鱼老师说的把这个标签贴到另一个商品上。
变量=变量 是同时指向一个内存地址。也就是甲鱼老师说的把标签贴过去。(多个标签贴到同一个商品上的意思)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-3 23:42:44 | 显示全部楼层
可以理解为标签或者指向关系,a开始指向[1,2,3],b也指向[1,2,3],后面a指向[4,5,6],而b还是指向的[1,2,3]。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-4 14:16:29 | 显示全部楼层
同意二楼观点,第二个a 是被重新赋值了 而b则没有被重新赋值 如果你再往后面写一行代码 b = a  b才能被贴上[4,5,6]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-4 18:54:48 | 显示全部楼层
先后顺序,a重新赋值,而b并没有再次赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 22:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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