从0.1开始学Python——[8]

从0.1开始学Python——[8]


之前学了很多不可变对象,例如数值、字符串等,现在学习了列表这样的可变对象。

可变对象的细节

可变对象指的是对象里的value可变,但是注意,改变对象里的value,也就是list1[索引]=×的操作不同于对整个变量重新赋值为其他列表。

list1 = [1, 2, 3]
print(id(list1))
list1[1] = 21
print(list1)
print(id(list1))
list1 = [1, 21, 3]
print(list1)
print(id(list1))
2535003345288
[1, 21, 3]
2535003345288
[1, 21, 3]
2535003345800

可以看出,同样是结果为[1,21,3]的列表。但是通过修改元素获得的id和之前的一样,而直接重新赋值的id发生了改变。前面的称为改对象,后者称为改变量
要注意,改对象的时候,如果有其他变量也指向这个对象,例如变量赋值命令,这时改对象的效果也会影响其他变量;但是如果是改变量,那你改这个是不会影响其他变量的。

list1 = [1, 2, 3]
print(id(list1))
list2 = list1
list1[1] = 21
print(list1)
print(list2)
print(id(list1), id(list2))
list2 = [1, 21, 3]
print(list2)
print(id(list1), id(list2))
2075955319176
[1, 21, 3]
[1, 21, 3]
2075955319176 2075955319176
[1, 21, 3]
2075955319176 2075955319688

区分==和is

==是比较对象的是否相等,而is是比id是不是一样。就拿上述的列表为例,二者值一样但是id不同。

print(list1 == list2)
print(list1 is list2)
True
False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值