【Python基础】为什么更改列表'y'也会更改列表'x'?

先看一段代码:

x = []
y = x
y.append(10)
print(y)
print(x)

上面这段代码的输出结果如下:

[10]
[10]

为什么我只是给列表y追加了一个元素,而列表x也改变了???

产生这样的结果有两个原因:

(1)变量只是指向具体对象的名称,当在执行y=x语句时,并不会为列表创建一个副本,而只是创建了一个新变量y指向x所指向的同一个对象。这也就是说只存在一个对象(列表),x和y都只是对它的引用。

(2)列表属于mutable(可变)对象,这意味着可以改变它的内容。

在调用append()之后,这个可变对象的内容由[]变为[10]。由于两个变量都指向同一对象,因此使用任何一个名称所访问到的都是修改后的值[10]。

我们再来看一段代码:

x = 5
y = x
x = x + 1
print(x)
print(y)

上面这段代码的输出结果为:

6
5

通过前面的学习,输出结果好像不应该是一样的吗???

当然不!因为整数是immutable(不可变)对象,当我们执行x=x+1语句时,我们并不是改变5这个对象的值,而是创建一个新的对象(整数6)并将其赋值给x(也就是改变了x所指向的对象)。在赋值之后我们就有了两个对象(整数6和5)以及分别指向它们的两个变量(x指向6而y指向5)。

总结

1.如果我们有一个可变对象(list等),我们可以使用某些特定的操作来改变它,所有指向它的变量都会显示它的改变

2.如果我们有一个不可变对象(int等),所有指向它的变量都将显示相同样的值,只要是会改变这个值的操作都将总是返回一个新的对象

往期精彩回顾




适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑

获取一折本站知识星球优惠券,复制链接直接打开:

https://t.zsxq.com/y7uvZF6

本站qq群704220115。

加入微信群请扫码:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值