更新時間:2021年04月01日15時11分 來源:傳智教育 瀏覽次數(shù):
組合數(shù)據(jù)類型可以將多個數(shù)據(jù)組織起來,根據(jù)數(shù)據(jù)組織方式的不同,Python的組合數(shù)據(jù)類型可分成三類:序列類型、集合類型和映射類型,如圖1所示。
圖1 組合數(shù)據(jù)類型的分類
下面對圖1中的這三種類型進行介紹。
(1)序列存儲一組排列有序的元素,每個元素的類型可以不同,通過索引可以鎖定序列中的指定元素。
(2)集合同樣存儲一組數(shù)據(jù),它要求其中的數(shù)據(jù)必須唯一,但不要求數(shù)據(jù)間有序。
(3)映射類型的數(shù)據(jù)中存儲的每個元素都是一個鍵值對,通過鍵值對的鍵可以迅速獲得對應(yīng)的值。
1.序列類型
序列類型來源于數(shù)學(xué)概念中的數(shù)列。數(shù)列是按一定順序排成一列的一組數(shù),每個數(shù)稱為這個數(shù)列的項,每項不是在其它項之前,就是在其它項之后。存儲n項元素的數(shù)列{an}的定義如下:
需要注意的是,數(shù)列的索引從0開始。通過索引i可以訪問數(shù)列中的第i-1項,例如通過s1可獲取數(shù)列{Sn}中的第2項。
序列類型在數(shù)列的基礎(chǔ)上進行了拓展,Python中的序列支持雙向索引:正向遞增索引和反向遞減索引,如圖2所示。
圖2 序列的索引體系
正向遞增索引從左向右依次遞增,第一個元素的索引為0,第二個元素的索引為1,以此類推;反向遞減索引從右向左依次遞減,最后一個元素的索引為-1,倒數(shù)第二個元素的索引為-2,以此類推。
Python中的序列主要有三種:字符串、列表和元組,關(guān)于它們的介紹如下:
(1) 字符串是由單一字符組成的不可修改的序列類型。
(2) 列表是一個可以修改的序列類型,使用相對更加靈活。
(3) 元組是一個不可變的序列類型,構(gòu)建好以后不可以進行任何修改。
上述序列中的字符串已在第3章中講解,后續(xù)會在第6.2節(jié)對另外兩種序列——列表和元組做進一步講解。
2.集合類型
數(shù)學(xué)中的集合是指具有某種特定性質(zhì)的對象匯總而成的集體,其中構(gòu)建集合的這些對象稱為該集合的元素。例如,成年人集合的每一個元素都是已滿18周歲的人。通常用大寫字母如A、B、S、……表示集合,用小寫字母如a、b、c、……表示集合的元素。集合中的元素具有三個特征,具體如下。
(1)確定性:給定一個集合,那么任何一個元素是否在集合中就確定了。例如,地球的四大洋構(gòu)成一個集合,其內(nèi)部的元素太平洋、大西洋、印度洋、北冰洋是確定的。
(2)互異性:集合中的元素互不相同。
(3)無序性:集合中的元素沒有順序,順序不同但元素相同的集合可視為同一集合。
Python集合與數(shù)學(xué)中的集合概念一致,也具備以上三個特性。Python要求放入集合中的元素必須是不可變類型,Python中的整型、浮點型、字符串類型和元組屬于不可變類型,列表、字典及集合本身都屬于可變的數(shù)據(jù)類型。對于所有的數(shù)據(jù)類型而言,它們只要能進行哈希運算,就可以作為集合中的元素出現(xiàn)。
3.映射類型
在數(shù)學(xué)中,設(shè)A、B是兩個非空集合,若按某個確定的對應(yīng)法則f,使集合A中的任意一個元素x,在集合B中都有唯一確定的元素y與之對應(yīng),則稱f為從集合A到集合B的一個映射。映射關(guān)系示例如圖3所示。
圖3 映射關(guān)系實例
映射類型也稱做可變的哈希表(散列表),哈希表是一種數(shù)據(jù)結(jié)構(gòu),表中存儲存在映射關(guān)系的鍵值對,其中值為實際存儲的數(shù)據(jù),鍵為查找數(shù)據(jù)時使用的關(guān)鍵字。哈希表具有很好的查詢性能,使用鍵可以快速地定位值。
Python中同樣采用“鍵-值”這種形式存儲數(shù)據(jù)間的映射關(guān)系。字典是Python唯一的內(nèi)建映射類型,字典的鍵必須遵守以下兩個原則:
(1)每個鍵只能對應(yīng)一個值,不允許同一個鍵在字典中重復(fù)出現(xiàn)。
(2)字典中的鍵是不可變類型。
多學(xué)一招:哈希算法
哈希(hash,散列)算法是將任意長度的二進制值映射為固定長度的較小二進制值,這個小的二進制值稱為哈希值。哈希值是原數(shù)據(jù)唯一且極其緊湊的數(shù)值表示形式,哪怕只更改原數(shù)據(jù)的一個字母,再次散列后產(chǎn)生的都是不同的值。若要找到散列為同一個值的兩個不同的輸入,在計算上是不可能的,所以數(shù)據(jù)的哈希值可以檢驗數(shù)據(jù)的完整性。
Python提供了適用于哈希算法的函數(shù)hash(),該函數(shù)可以獲取大多數(shù)數(shù)據(jù)(如字符串、數(shù)字)的哈希值。例如:
>>> hash("HeiMa") 1296313009587961352 >>> hash("123456") -8765639574853590066 >>> hash("HeiMa123456") 9132461567425907503
由此看出,哈希值與哈希前的數(shù)據(jù)組合無關(guān)。
猜你喜歡:
python中轉(zhuǎn)換數(shù)據(jù)類型有什么作用?
在Windows平臺如何安裝Python?【圖文教程】
2021-03-24Python培訓(xùn)哪家機構(gòu)好?【百度云資源】python基礎(chǔ)視頻教程下載
2021-03-23Python是如何管理內(nèi)存的?【python培訓(xùn)】
2021-03-23python難學(xué)嗎?適不適合零基礎(chǔ)學(xué)習(xí)?
2021-03-23Python培訓(xùn)機構(gòu)哪里好?Python零基礎(chǔ)教程下載【百度云資源】
2021-03-23python培訓(xùn)哪個靠譜?【點擊領(lǐng)取福利】python自學(xué)教程下載
2021-03-19