Python中元组中的列表数据为什么可变?

既然说元组数据类型是不可变的,但是当指定元组中的列表数据怎么又是可变的呢?

  • Python中一些皆对象,会为元组中的每一个数据分配内存地址空间
  • 当指定元组中的列表数据时,本质是另外一段内存空间对应的是列表数据,完全独立于元组,所以是可变的。

怎么验证?

1,查看现象:

>>> a = (1,2,3,[1,2,3])

>>> a[3]

[1, 2, 3]

>>> a[3][0]

1

>>> a[3][0] = 5

>>> a

(1, 2, 3, [5, 2, 3])

2,查看元组a的内存地址空间:

>>> id(a)
2608417672464

3, 查看元组a[3]的内存地址空间

>>> id(a[3])
2608385422400

扩展:type(a[0]) 是整型数据,不可变,如果是可变类型,也是可以改变的!

>>> type(a[0])
<class 'int'>

posted @ 2021-07-18 14:05  小白白bai  阅读(1341)  评论(0)    收藏  举报