python中的不可變資料型別與可變資料型別詳解

2022-10-04 19:00:11 字數 2546 閱讀 3160

前言

python與c/c++不一樣,它的變數使用有自tqylfcoz己的特點,當初學python的時候,一定要記住「一切皆為物件,一切皆為物件的引用」這句話,其實這個特點類似於j**a,所以在python裡面大家也不用擔心類似於c/c++中的指標的複雜問題, 在python中資料分為可變資料型別,不可變資料型別。

所以在學習python過程中我們一定會遇到不可變資料型別和可變資料型別。下面話不多說了,來一起看看詳細的介紹吧

1.名詞解釋

以下所有的內容都是基於記憶體位址來說的。

總結:不可變資料型別更改後位址發生改變,可變資料型別更改位址不發生改變

2.資料型別分類

在python中資料型別有:整型,字串,元組,集合,列表,字典。接下來我們用例子來一一檢視他們分別屬於不可變資料型別還是可變資料型別。

2.1 整型

a = 1

print(id(a),type(a))

a = 2

print(id(a),type(a))

1912499232

1912499264

我們可以發現,當資料發生改變後,變數的記憶體位址發生了改變,那麼整型就是不可變資料型別。

2.2 字串

b = 'djx'

print(id(b),type(b))

b = 'djx1996'

print(id(b),type(b))

535056476344

535056476624

我們可以發現,當資料發生改變後,變數的記憶體位址發生了改變,那麼字串就是不可變資料型別。

2.3 元組

元組被稱為唯讀列表,即資料可以被查詢,但不能被修改,但是我們可以在元組的元素中存放乙個列表,通過更改列表的值來檢視元組是屬於可變還是不可變。

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

我們可以發現,雖然元組資料發生改變,但是記憶體位址沒有發生了改變,但是我們不可以以此來判定元組就是可變資料型別。我們回頭仔細想想元組的定義就是不可變的。我們修改了元組中列表的值,但是因為列表是可變資料型別,所以雖然在列表中更改了值,但是列表的位址沒有改變,列表在元組中的位址的值沒有改變,所以也就意味著元組沒有發生變化。我們就可以認為元組是不可變資料型別,因為元組是不可變的。

2.4 集合

集合我們常用來進行去重和關係運算,集合是無序的。

s =

print(程式設計客棧s,type(s),id(s))

s.add('djx')

print(s,type(s),id(s))

result:

870405285032

870405285032

我們可以發現,雖然集合資料發生改變,但是記憶體位址沒有發生了改變,那麼集合就是可變資料型別。

2.5 列表

列表是python中的基礎資料型別之一,其他語言中也有類似於列表的資料型別,比如js中叫陣列,它是以括起來,每個元素以逗號隔開,而且它裡面可以存放各種資料型別。

list = [1,'q','qwer',true]

print(list,type(list),id(list))

list.append('djx')

print(list,type(list),id(list))

result:

[1, 'q', 'qwer', true] 80814062112

[1, 'q', 'qwer', true, 'djx'] 808140621128

我們可以發現,雖然列表資料發生改變,但是記憶體位址沒有發生了改變,那麼列表就是可變資料型別。

2.6 字典

字典是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中的不可變資料型別與可變資料型別詳解

本文位址:

python 可變資料型別 不可變資料型別

在python中,資料型別分為可變資料型別和不可變資料型別,不可變資料型別包括string,int,float,tuple,可變資料型別包括list,dict。所謂的可變與不可變,舉例如下 a test print a 0 t a 0 1 traceback most recent call las...

python 可變資料型別 不可變資料型別

在python中,資料型別分為可變資料型別和不可變資料型別,不可變資料型別包括string,int,float,tuple,可變資料型別包括list,dict。所謂的可變與不可變,舉例如下 a test print a 0 t a 0 1 traceback most recent call las...

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,...