You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python中能修改元组内列表的元素?

为什么元组里的列表元素能被修改?

嘿,这个问题刚接触Python的时候真的很容易困惑!其实你操作完全没错,这就是Python里元组“不可变性”的一个容易被误解的点~

首先得明确:元组的不可变,指的是元组本身保存的**元素引用(也就是指向对象的内存地址)**不能被修改。换句话说,你不能给元组添加新元素、删除已有元素,也不能把元组里的某个元素替换成另一个对象(比如把tuplelist[1]改成另一个列表或者字符串)。

但如果元组里的元素是可变对象(比如列表、字典这类本身可以修改的对象),那情况就不一样了:元组只是保存了这个可变对象的引用,你修改这个对象内部的内容时,并没有改变元组里的引用——你只是在操作这个引用指向的对象本身。

看你的测试代码,用更清晰的方式展示就是:

# 初始化元组,第二个元素是一个列表
tuplelist = ('mouse', [1, 2, 3])
print(tuplelist)  # 输出: ('mouse', [1, 2, 3])

# 修改列表里的第一个元素
tuplelist[1][0] = 999
print(tuplelist)  # 输出: ('mouse', [999, 2, 3])

反过来,如果你尝试直接替换元组里的列表(也就是改变元组保存的引用),就会触发错误,这才是元组不可变性的体现:

# 尝试替换元组里的列表,会抛出TypeError
tuplelist[1] = [4,5,6]
# 错误信息: TypeError: 'tuple' object does not support item assignment

所以简单总结:元组锁死的是“它自己手里的那些指向对象的指针”,但指针指向的对象如果本身是可变的,那对象内部的内容还是可以自由修改的~

内容的提问来源于stack exchange,提问作者YorchAMC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:31:52