天天看點

為什麼元組Tuple是不可變的,清單List是可變的

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,并未綁定到新的對象,而是修改了原來的對象。