1.元組類型簡介
使用括號(hào)包圍的數(shù)據(jù)結(jié)構(gòu)是元組(tuple)。例如:
1 >>> (1,2,3) 2 (1, 2, 3) 3 4 >>> T = (1,2,3,) 5 >>> T 6 (1, 2, 3)
元組和列表一樣,都是容器型的數(shù)據(jù)結(jié)構(gòu),且都是序列,所以容器中的元素都是按照索引位置有序存放的。所以,可以進(jìn)行索引取值、切片等序列通用操作。
不同的是,元組是不可變序列,無法原處修改,意味著修改元組必須創(chuàng)建新的元組對(duì)象。實(shí)際上元組的概念來源于數(shù)學(xué),在關(guān)系型數(shù)據(jù)庫中用來表示一行數(shù)據(jù)對(duì)象,而行數(shù)據(jù)對(duì)象是固定不變的完整、穩(wěn)定結(jié)構(gòu),Python的元組也一樣隱含的是完整性、穩(wěn)定性。
我是一名python開發(fā)工程師,整理了一套python的學(xué)習(xí)資料,從基礎(chǔ)的python腳本到web開發(fā)、爬蟲、數(shù)據(jù)分析、數(shù)據(jù)可視化、機(jī)器學(xué)習(xí)、面試真題等。想要的可以進(jìn)群:688244617免費(fèi)領(lǐng)取。不可變序列同樣意味著可以使用hash()內(nèi)置函數(shù)進(jìn)行hash,也就是說它是hashable的。
hashable的類型是穩(wěn)定的數(shù)據(jù),可以放在一些需要穩(wěn)定結(jié)構(gòu)的地方,比如Set、dict的key,它們內(nèi)部都是通過hash后的數(shù)據(jù)存放的。hashable意味著不同對(duì)象的hash值不同。比如類的實(shí)例對(duì)象全都是不同的,之所以不同是因?yàn)樗鼈兡J(rèn)就是hashable的,不同對(duì)象的hash值不同。
2.元組的結(jié)構(gòu)
元組可以看作是不可變的列表。它們的結(jié)構(gòu)非常類似,都是在容器中存放元素的引用地址。
它的結(jié)構(gòu)圖如下:
因?yàn)樵M是不可變對(duì)象,所以修改元組數(shù)據(jù)會(huì)報(bào)錯(cuò)。也就是說,元組中的保存的引用地址是不可變的。
1 >>> T = (1111,2222,3333,4444) 2 3 >>> T[0] = 11111 4 Traceback (most recent call last): 5 File "<stdin>", line 1, in <module> 6 TypeError: 'tuple' object does not support item assignment
覺得文章還可以的話不妨收藏起來慢慢看,有任何意見或者看法歡迎大家評(píng)論!