在 Python 中,元组是不可变序列,那为什么当元组中的元素是可变序列时(如 list、dict)可进行增删的操作?
在定义一个元组时,Python内部会为元组中的每一个元素分配一个内存地址,当我们更改这个列表时,
只是更改了这个列表中的内容,但是这个元组的元素所指向的内存地址是没有被更改的,也就没有违背不可变序列的要求
所以是可以进行增删操作的。示例代码如下
In [35]: tup = ([1,2],2) In [36]: [id(i) for i in tup] Out[36]: [2056970648264, 1724785392] In [37]: tup[0].append(1) In [38]: tup[0] Out[38]: [1, 2, 1] In [39]: [id(i) for i in tup] Out[39]: [2056970648264, 1724785392]