在學習python過程中我們一定會遇到不可變資料型別和可變資料型別。
以下所有的內容都是基於記憶體位址來說的。
在python中資料型別有:整型,字串,元組,集合,列表,字典。接下來我們用例子來一一檢視他們分別屬於不可變資料型別還是可變資料型別。
a = 1我們可以發現,當資料發生改變後,變數的記憶體位址發生了改變,那麼整型就是不可變資料型別。print(id(a),type(a))
a = 2
print(id(a),type(a))
1912499232 1912499264
b = 'djx'我們可以發現,當資料發生改變後,變數的記憶體位址發生了改變,那麼字串就是不可變資料型別。print(id(b),type(b))
b = 'djx1996'
print(id(b),type(b))
535056476344 535056476624
元組被稱為唯讀列表,即資料可以被查詢,但不能被修改,但是我們可以在元組的元素中存放乙個列表,通過更改列表的值來檢視元組是屬於可變還是不可變。
c1 = ['1','2']我們可以發現,雖然元組資料發生改變,但是記憶體位址沒有發生了改變,但是我們不可以以此來判定元組就是可變資料型別。我們回頭仔細想想元組的定義就是不可變的。我們修改了元組中列表的值,但是因為列表是可變資料型別,所以雖然在列表中更改了值,但是列表的位址沒有改變,列表在元組中的位址的值沒有改變,所以也就意味著元組沒有發生變化。我們就可以認為元組是不可變資料型別,因為元組是不可變的。c = (1,2,c1)
print(c,id(c),type(c))
c1[1] = 'djx'
print(c,id(c),type(c))
result:
(1, 2, ['1', '2']) 386030735432 (1, 2, ['1', 'djx']) 386030735432
集合我們常用來進行去重和關係運算,集合是無序的。
s =我們可以發現,雖然集合資料發生改變,但是記憶體位址沒有發生了改變,那麼集合就是可變資料型別。print(s,type(s),id(s))
s.add('djx')
print(s,type(s),id(s))
result:
870405285032
870405285032
列表是python中的基礎資料型別之一,其他語言中也有類似於列表的資料型別,比如js中叫陣列,它是以括起來,每個元素以逗號隔開,而且它裡面可以存放各種資料型別。
list = [1,'q','qwer',true]我們可以發現,雖然列表資料發生改變,但是記憶體位址沒有發生了改變,那麼列表就是可變資料型別。print(list,type(list),id(list))
print(list,type(list),id(list))
result:
[1, 'q', 'qwer', true] 808140621128
[1, 'q', 'qwer', true, 'djx'] 808140621128
字典是python中唯一的對映型別,採用鍵值對(key-value)的形式儲存資料。python對key進行雜湊函式運算,根據計算的結果決定value的儲存位址,所以字典是無序儲存的。但是在3.6版本後,字典開始是有序的,這是新的版本特徵。
字典的key值可以是整型,字串,元組,但是不可以是列表,集合,字典。
tuple = (1)我們可以發現,雖然字典資料發生改變,但是記憶體位址沒有發生了改變,那麼字典就是可變資料型別。dic =
d =
print(d,type(d),id(d))
d['key4'] = 'haha'
print(d,type(d),id(d))
result:
256310956320
256310956320
資料型別可變/不可變
整型不可變
字串不可變
元組不可變
列表可變
集合可變
字典可變
出處:
python 可變資料型別和不可變資料型別
不可變資料型別更改後位址發生變化,可變資料型別更改後位址不發生變化。看 說話 a 1 int b string string c 1,2 tuple print type a id a print type b id b print type c id c a 1b 1 c 3 4 print a,...
Python 可變資料型別和不可變資料型別
python的資料儲存在記憶體裡,該資料分為可變資料型別和不可變資料型別 不可變資料型別 字串,數字,元祖 可變資料型別 列表,字典,集合 nums 1 2,3 nums bk nums nums 0 0print nums nums print nums bk nums bk print form...
python 可變資料型別 不可變資料型別
在python中,資料型別分為可變資料型別和不可變資料型別,不可變資料型別包括string,int,float,tuple,可變資料型別包括list,dict。所謂的可變與不可變,舉例如下 a test print a 0 t a 0 1 traceback most recent call las...