什么是可变对象吗?用图说话

可变与不可变

列表(list)是一个可变容器,可变与不可变是一对很微妙的概念,因为网上经常出现,所以再重点总结下。

创建一个列表 a = [1,3,[5,7],9,11,13],存储示意图:


执行a.pop()后删除最后一个元素:


删除后:

再在索引3处增加一个元素8,a.insert(3,8),插入后如下:


因此,对列表而言,它能增加或删除元素,所以它是可变的。

但是,如果仅仅在列表a中做这一步操作:

a[2].insert(1,6) #在`a[2]`(也是一个列表)中插入元素6

插入后可视化图:


对于“可变”这个概念而言,这就不是真正让a可变的操作。

tuple就是一个典型的不可变容器对象,对它而言,同样也可以修改嵌套对象的取值,但这并没有真正改变tuple内的元素。

如下所示,有一个元祖a

a =(1,3,[5,7],9,11,13)

a的存储示意图如下:


下面插入一个元素6:

a[2].insert(1,6)

可以看到,a内元素没增没减,长度还是6


不可变容器对象的本质:一旦创建后,长度就被唯一确定。但是,对于list而言,长度会有增有减,所以它是可变的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值