鱼C论坛

 找回密码
 立即注册
查看: 975|回复: 3

[已解决]关于两个列表赋值之后相互影响的问题。。

[复制链接]
发表于 2018-9-24 13:55:07 | 显示全部楼层 |阅读模式

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

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

x
<
a1=[0,1,2,3,4,5]
b1=a1
a1=[50]
print(b1)
#---------------------
a2=[0,1,2,3,4,5]
b2=a2
a2.remove(3)
print(b2)
>

为什么运行后b1输出的值是[0,1,2,3,4,5],而b2输出的值却是[0,1,2,4,5]?如果两个列表要相互影响的话第一种情况为什么不会相互影响?
python版本3.7
最佳答案
2018-9-24 14:09:35
赋值修改了指向,元素修改指向不变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-24 14:00:31 | 显示全部楼层
情况一, a1 参考了另外一个数组 [50],b1 还是原本哪一个 [0,1,2,3,4,5]
情况二,a2 b2 参考同一个数组 [0,1,2,3,4,5] 透过 a2, remove(3) 作用在该数组上,b2 参考的是同一笔 数据,所以随着改变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-24 14:09:35 | 显示全部楼层    本楼为最佳答案   
赋值修改了指向,元素修改指向不变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-24 14:33:52 | 显示全部楼层
深拷贝和浅拷贝,
先理解赋值语句,a1   和  [1,2,3,4,5]    等号只相当于一个链接,很像windows里面的快捷方式,b1  =  a1 也就相当于再创建一个[1,2,3,4,5]的快捷方式,
a1 = [3]   并不是把列表[1,2,3,4,5]改了,而是把 a1 从[1,2,3,4,5]的快捷方式,变成了[3]的快捷方式
第二个实际上你算是把[1,2,3,4,5] 利用 a1这个快捷方式 读取到了内存,然后再操作,想想你打开 windows txt 文件  然后往里面改数据,改完之后所有指向这个txt文件的快捷方式,只要打开文件肯定会改变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 08:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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