資料型別總結與分類
阿新 • • 發佈:2020-12-05
一、可變型別與不可變型別
可變型別:值發生改變時,記憶體地址不變,即id不發生變化,證明沒有改變原值
不可變型別:值發生改變時,記憶體地址也跟著改變,即id也發生了變化,證明改變了原值,是產生了新的值
數字:
>>> x = 10
>>> id(x)
1830448896
>>> x = 20
>>> id(x)
1830448928
# 值發生了改變,記憶體地址也發生了改變,即id發生了變化,證明該數字型別為不可變型別
字串:
>>> x = "Jy"
>>> id(x)
938809263920
>>> x = "Ricky"
>>> id(x)
938809264088
# 值發生了變化,記憶體地址也跟著發生了變化,即id也發了變化,證明字串型別為不可變型別
列表:
>>> list1 = ['tom','jack','egon']
>>> id(list1)
486316639176
>>> list1[2] = 'kevin'
>>> id(list1)
486316639176
>>> list1.append('lili')
>>> id(list1)
486316639176
# 列表中的值發生了變化,記憶體地址沒有變化,即id沒有變化,證明列表型別為可變型別
元組:
>>> t1 = ("tom","jack",[1,2])
>>> t1[0]='TOM' # 報錯:TypeError
>>> t1.append('lili') # 報錯:TypeError
# 元組內的元素無法修改,指的是元組內索引指向的記憶體地址不能被修改
>>> t1 = ("tom","jack",[1,2])
>>> id(t1[0]),id(t1[1]),id(t1[2])
(4327403152, 4327403072, 4327422472)
>>> t1[2][0]=111 # 如果元組中存在可變型別,是可以修改,但是修改後的記憶體地址不變
>>> t1
('tom', 'jack', [111, 2])
>>> id(t1[0]),id(t1[1]),id(t1[2]) # 檢視id仍然不變
(4327403152, 4327403072, 4327422472)
# 元組是不可變型別,元組的值不管如何修改(如果元組中存在列表等),他的記憶體地址是不變化的,即id不會發生變化
字典:
>>>dic = {'name':'egon','sex':'male','age':18}
>>> id(dic)
4327423112
>>> dic['age']=19
>>> dic
{'age': 19, 'sex': 'male', 'name': 'egon'}
>>> id(dic)
4327423112
# 字典中的值發生了改變,但是記憶體地址沒有變化,即id沒有發生變化,證明字典為可變型別
二、資料型別的總結
注:集合沒有放在上面,原因是集合是按照一個整體來進行使用的,不是單個進行使用的,集合主要是運算和去重
集合其實也是存放多個值的,集合也是可變型別