在网上看了很多文章,都说元组不可变,元素不能修改,但不知道具体指的是什么。于是想自己探索一下,弄明白怎么回事。
- 重新赋值
复制代码
1
2
3
4
5
6bb = (1,2,3) print(type(bb)) print(bb) bb = (4,4) print(bb)
运行结果
复制代码
1
2
3
4<class 'tuple'> (1, 2, 3) (4, 4)
一开始费解,这不是改了元组的值了吗?
但实际上这个是元组的重新赋值,原来的元组(1,2,3)并没有变,只是把bb的指向改了,改成指向一个新的元组(4,4)了。
- 直接赋值
稍微修改一下上面的代码。
复制代码
1
2
3
4
5
6bb = (1,2,3) print(type(bb)) print(bb) bb[0] = 4 print(bb)
运行结果
复制代码
1
2TypeError: 'tuple' object does not support item assignment
报错,不能对元祖的某个元素直接赋值。
- 元祖的可变性
再把上面的代码稍微修改一下,元祖里加入一个列表cc
复制代码
1
2
3
4
5
6
7cc = [4,5] bb = (1,2,3,cc) print(type(bb)) print(bb) cc[0] = 0 print(bb)
运行结果
复制代码
1
2
3
4<class 'tuple'> (1, 2, 3, [4, 5]) (1, 2, 3, [0, 5])
从结果可以看出,当修改了列表里的内容了以后,元组的值发生了变化,说明当元组中含有可变的变量类型时,元组内容是可变的。
那什么是元组不变的呢?
答案应该是元组bb最后一个单元指向的列表cc地址是不变的。
最后
以上就是耍酷绿草最近收集整理的关于python中元组tuple不可变指的什么的全部内容,更多相关python中元组tuple不可变指内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复