元祖的里的元素真的不可变吗?

tup = (1,2,3,4,[5,6])
tup[4][0] = 0
tup[4][1] = 0
print(tup)
输出:
(1, 2, 3, 4, [0, 0])

元祖中的元素不可变指的是元祖指向的对象不变,tup 指向的列表并没有变,只是列表的中的元素变了。
所以如果要保证元祖中的元素不可被修改,那么就需要保证你的元祖中的元素是不可被修改的。

元组所指向的内存实际上保存的是元组内数据的内存地址集合(即 t[0], t[1]...t[n] 的内存地址),且元组一旦建立,这个集合就不能增加修改删除,一旦集合内的地址发生改变,必须重新分配元组空间保存新的地址集(元组类似 C 语言里的指针数组,只不过这个数组不能被修改)

通过间接方法修改元组:
tuple1 = (1,2,4,5)
tuple2 = tuple1[:2] + (3,) + tuple1[2:]
print(tuple2)
输出:
(1, 2, 3, 4, 5)

字符串是一种特殊的元祖,字符串的元素也不可被改变。

全部评论

相关推荐

牛客37185681...:马德,我感觉这是我面过最恶心的公司,一面是两个女hr,说什么实习前几个月属于试用期,试用期过了才能转成正式实习生,我***笑了,问待遇就是不说,问能不能接受全栈,沙币公司
如果可以选,你最想去哪家...
点赞 评论 收藏
分享
笑着秋招😊:我一直认为努力有回报是一件很幸福很幸福的事情,恭喜你
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务