鱼C论坛

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

[已解决]关于变量的问题

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

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

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

x
本帖最后由 国米萨队 于 2020-12-23 19:43 编辑
  1. >>> s = [1,2,3,4,5]
  2. >>> s1 =s
  3. >>> s.append("上山打老虎")
  4. >>> s
  5. [1, 2, 3, 4, 5, '上山打老虎']
  6. >>> s1
  7. [1, 2, 3, 4, 5, '上山打老虎']
  8. >>> s = [1,2,3,4,5]
  9. >>> s1 = s
  10. >>> s1.append("上山打老虎")
  11. >>> s
  12. [1, 2, 3, 4, 5, '上山打老虎']
  13. >>> s1
  14. [1, 2, 3, 4, 5, '上山打老虎']
  15. >>>
复制代码


为什么明明只操作s 或者s1 对应的s1 或者s都跟着变化
最佳答案
2020-12-23 20:32:33
第一行给s一个列表,py会在内存中创建这个列表并给他一个s的标签,创建的列表就相当于一个仓库的货物,而s就是贴在货物上的标签
第二行s1=s,这里没有创建新的列表,只是给刚才创建的列表多加了个标签,也就是你在同一个货物上贴了两张不同的标签
第三行给s添加元素,因为s和s1本质上对应的是同一个列表,所以s改变s1也改变了

这部分你可以看深浅拷贝,希望上面我的描述能让你看懂
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-23 20:26:25 From FishC Mobile | 显示全部楼层
映像关系
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-23 20:32:33 | 显示全部楼层    本楼为最佳答案   
第一行给s一个列表,py会在内存中创建这个列表并给他一个s的标签,创建的列表就相当于一个仓库的货物,而s就是贴在货物上的标签
第二行s1=s,这里没有创建新的列表,只是给刚才创建的列表多加了个标签,也就是你在同一个货物上贴了两张不同的标签
第三行给s添加元素,因为s和s1本质上对应的是同一个列表,所以s改变s1也改变了

这部分你可以看深浅拷贝,希望上面我的描述能让你看懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-12-23 22:10:15 | 显示全部楼层
s = [1,2,3,4,5]
s1 =s.copy()
s.append("上山打老虎")

print(s)
print(s1)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-24 13:06:24 | 显示全部楼层
  1. >>> s = [1,2,3,4,5]
  2. >>> s1 =s
  3. >>> print(id(s))
  4. 2155339526600
  5. >>> print(id(s1))
  6. 2155339526600
复制代码

你看嘛,这个代码是可以查看变量的内存地址的,这是一个地址,所以这里的赋值“s1=s”其实就是一个人的两个名字而已
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-29 22:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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