欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

为什么元组Tuple是不可变的,列表List是可变的

程序员文章站 2024-03-23 16:54:52
...

1、所谓元组的不可变指的是元组所指向的内存中的内容不可变。

 

# 关于元组是不可变的
tupleA = (1, 2, 3, 4)
# tupleA[0] = 0  # 报错 TypeError: 'tuple' object does not support item assignment 不支持修改元素
# 查看内存地址 id()
print(id(tupleA))
tupleA = (1, 2, 3, 4)
print(id(tupleA))
tupleA = (0, 1, 2, 3)
print(id(tupleA))

 

输出结果是: 

 

1960670738208
1960670738208
1960670737888

从以上实例可以看出,重新赋值的元组 tupleA,绑定到新的对象了,不是修改了原来的对象。

 

2、List 是可变的

 

#关于List是可变的
listA = [1, 2, 3]
print(id(listA))
listA[0] = 0
print(listA)
print(id(listA))
listA = [1, 2, 3]
print(id(listA))
listA = [1, 2, 4]
print(id(listA))

 

输出结果是

2974141229248
[0, 2, 3]
2974141229248
2974141227968
2974141229248

从以上实例可以看出,重新赋值的列表listA,并未绑定到新的对象,而是修改了原来的对象。

 

 

字典中的 key 必须是不可变的类型

int str tuple  是值类型 (是不可变的)

List set dict  是引用类型(是可变的) 

相关标签: Python