元组里边嵌套的列表的值是可以修改的。可以对内部的列表进行值的添加,删除,修改。但是不能替换掉该列表。个人理解只要不引起列表id值改变的操作都是可以的。
>>> a = (1,2,3,[4,5,6])
>>> a[3] // 查看元组中的列表
[4, 5, 6]
>>> a[3][0] = 55 // 修改元祖中列表的第一个元素
>>> a
(1, 2, 3, [55, 5, 6]) // 从结果中可以看出,元祖中嵌套的列表是可以修改的
>>> a[3].append(100) // 增加一个元素
>>> a
(1, 2, 3, [55, 5, 6, 100])
>>> a[3] = {100,100,100} // 将整个列表替换掉将会报错
Traceback (most recent call last):
File "", line 1, in
a[3] = {100,100,100}
TypeError: 'tuple' object does not support item assignment
>>> a = (1,2,3,[4,5,6])
>>> a[3] = [4,5,6] // 替换为跟原来的值相同也不行
Traceback (most recent call last):
File "", line 1, in
a[3] = [4,5,6]
TypeError: 'tuple' object does not support item assignment
// 以下数据证明对整体赋值会改变元组的id
>>> id([1,2,3])
2997084836552
>>> id([1,2,3])
2997084837704
>>> a = [1,2,3]
>>> id(a)
2997084836936
>>> a = [1,2,3]
>>> id(a)
2997084836552
>>> a
[1, 2, 3]
>>> a[0] = 100
>>> id(a)
2997084836552