教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

組合數(shù)據(jù)類型有幾類?各種類型特點是什么?

更新時間:2021年04月01日15時11分 來源:傳智教育 瀏覽次數(shù):

傳智教育-一樣的教育,不一樣的品質(zhì)


組合數(shù)據(jù)類型可以將多個數(shù)據(jù)組織起來,根據(jù)數(shù)據(jù)組織方式的不同,Python的組合數(shù)據(jù)類型可分成三類:序列類型、集合類型和映射類型,如圖1所示。

1617259960916_1.jpg

圖1 組合數(shù)據(jù)類型的分類

下面對圖1中的這三種類型進行介紹。

(1)序列存儲一組排列有序的元素,每個元素的類型可以不同,通過索引可以鎖定序列中的指定元素。

(2)集合同樣存儲一組數(shù)據(jù),它要求其中的數(shù)據(jù)必須唯一,但不要求數(shù)據(jù)間有序。

(3)映射類型的數(shù)據(jù)中存儲的每個元素都是一個鍵值對,通過鍵值對的鍵可以迅速獲得對應的值。

1.序列類型

序列類型來源于數(shù)學概念中的數(shù)列。數(shù)列是按一定順序排成一列的一組數(shù),每個數(shù)稱為這個數(shù)列的項,每項不是在其它項之前,就是在其它項之后。存儲n項元素的數(shù)列{an}的定義如下:


1617259955344_2.png

需要注意的是,數(shù)列的索引從0開始。通過索引i可以訪問數(shù)列中的第i-1項,例如通過s1可獲取數(shù)列{Sn}中的第2項。

序列類型在數(shù)列的基礎上進行了拓展,Python中的序列支持雙向索引:正向遞增索引和反向遞減索引,如圖2所示。

1617259943840_3.jpg

圖2 序列的索引體系

正向遞增索引從左向右依次遞增,第一個元素的索引為0,第二個元素的索引為1,以此類推;反向遞減索引從右向左依次遞減,最后一個元素的索引為-1,倒數(shù)第二個元素的索引為-2,以此類推。

Python中的序列主要有三種:字符串、列表和元組,關于它們的介紹如下:

(1) 字符串是由單一字符組成的不可修改的序列類型。

(2) 列表是一個可以修改的序列類型,使用相對更加靈活。

(3) 元組是一個不可變的序列類型,構(gòu)建好以后不可以進行任何修改。

上述序列中的字符串已在第3章中講解,后續(xù)會在第6.2節(jié)對另外兩種序列——列表和元組做進一步講解。

2.集合類型

數(shù)學中的集合是指具有某種特定性質(zhì)的對象匯總而成的集體,其中構(gòu)建集合的這些對象稱為該集合的元素。例如,成年人集合的每一個元素都是已滿18周歲的人。通常用大寫字母如A、B、S、……表示集合,用小寫字母如a、b、c、……表示集合的元素。集合中的元素具有三個特征,具體如下。

(1)確定性:給定一個集合,那么任何一個元素是否在集合中就確定了。例如,地球的四大洋構(gòu)成一個集合,其內(nèi)部的元素太平洋、大西洋、印度洋、北冰洋是確定的。

(2)互異性:集合中的元素互不相同。

(3)無序性:集合中的元素沒有順序,順序不同但元素相同的集合可視為同一集合。

Python集合與數(shù)學中的集合概念一致,也具備以上三個特性。Python要求放入集合中的元素必須是不可變類型,Python中的整型、浮點型、字符串類型和元組屬于不可變類型,列表、字典及集合本身都屬于可變的數(shù)據(jù)類型。對于所有的數(shù)據(jù)類型而言,它們只要能進行哈希運算,就可以作為集合中的元素出現(xiàn)。

3.映射類型

在數(shù)學中,設A、B是兩個非空集合,若按某個確定的對應法則f,使集合A中的任意一個元素x,在集合B中都有唯一確定的元素y與之對應,則稱f為從集合A到集合B的一個映射。映射關系示例如圖3所示。

1617259929954_4.jpg

圖3 映射關系實例

映射類型也稱做可變的哈希表(散列表),哈希表是一種數(shù)據(jù)結(jié)構(gòu),表中存儲存在映射關系的鍵值對,其中值為實際存儲的數(shù)據(jù),鍵為查找數(shù)據(jù)時使用的關鍵字。哈希表具有很好的查詢性能,使用鍵可以快速地定位值。

Python中同樣采用“鍵-值”這種形式存儲數(shù)據(jù)間的映射關系。字典是Python唯一的內(nèi)建映射類型,字典的鍵必須遵守以下兩個原則:

(1)每個鍵只能對應一個值,不允許同一個鍵在字典中重復出現(xiàn)。

(2)字典中的鍵是不可變類型。

多學一招:哈希算法

哈希(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ù)組合無關。



猜你喜歡:

python中轉(zhuǎn)換數(shù)據(jù)類型有什么作用?

Python常見的數(shù)據(jù)類型有哪些?

Python不同數(shù)據(jù)類型可以相互轉(zhuǎn)換嗎?

傳智教育Python+數(shù)據(jù)分析培訓

0 分享到:
和我們在線交談!