python中元组tuple不可变指的什么

在网上看了很多文章,都说元组不可变,元素不能修改,但不知道具体指的是什么。于是想自己探索一下,弄明白怎么回事。

  • 重新赋值
bb = (1,2,3)
print(type(bb))
print(bb)
bb = (4,4)
print(bb)

运行结果

<class 'tuple'>
(1, 2, 3)
(4, 4)

一开始费解,这不是改了元组的值了吗?
但实际上这个是元组的重新赋值,原来的元组(1,2,3)并没有变,只是把bb的指向改了,改成指向一个新的元组(4,4)了。

  • 直接赋值
    稍微修改一下上面的代码。
bb = (1,2,3)
print(type(bb))
print(bb)
bb[0] = 4
print(bb)

运行结果

TypeError: 'tuple' object does not support item assignment

报错,不能对元祖的某个元素直接赋值。

  • 元祖的可变性
    再把上面的代码稍微修改一下,元祖里加入一个列表cc
cc = [4,5]   
bb = (1,2,3,cc)
print(type(bb))
print(bb)
cc[0] = 0
print(bb)

运行结果

<class 'tuple'>
(1, 2, 3, [4, 5])
(1, 2, 3, [0, 5])

从结果可以看出,当修改了列表里的内容了以后,元组的值发生了变化,说明当元组中含有可变的变量类型时,元组内容是可变的。

那什么是元组不变的呢?
答案应该是元组bb最后一个单元指向的列表cc地址是不变的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值