計算機不只能對單個變量表示的數據進行處理,一般狀況下,計算機更須要對一組數據進行批量處理。這種可以表示多個數據的類型稱爲組合數據類型。Python語言最經常使用的組合數據類型有3大類,分別是集合類型、序列類型和映射類型。shell
集合類型是一個元素集合,元素之間無序,相同元素在集合中惟一存在。編程
序列類型是一個元素向量,元素之間存在前後關係,經過序列號訪問,元素之間不排他。序列類型的典型表明是字符串類型和列表類型。ruby
映射類型是「鍵-值」數據項的組合,每個元素是一個鍵值對,表示爲(key,value)。映射類型的典型表明是字典類型。集合類型是一個具體的數據類型,而序列類型和映射類型都是一類數據類型的總稱。bash
Python語言中的集合類型與數學中的集合概念一致,即包含0個或多個數據項的無序組合。集合是無序組合,用大括號({ })表示,他沒有索引和位置的概念,集合中的元素能夠動態的增長和刪減。函數
集合中的元素不可重複,元素類型只能是不可變數據類型,例如整數、浮點數、字符串、元組。相比而言,列表、字典和集合類型自己都是可變數據類型,不能做爲集合的元素出現。ui
建立集合直接用大括號表示,集合間沒有順序,不能比較,不能排序。若是向集合輸入重複的元素,會自動去重。代碼演示以下:spa
string = "Python真簡單啊" num = 8 A = {1,"2",'34',5.0,6+7j,string,num}#內容能夠是變量表明的數據 print(A) #輸出結果爲 {1, '2', 5.0, 8, '34', 'Python真簡單啊', (6+7j)} B = {string,num,A}#不能夠含有集合A,會報錯 print(B) #報錯狀況爲: Traceback (most recent call last): File "C:\Users\Durova\Desktop\demo.py", line 5, in <module> B = {string,num,A} TypeError: unhashable type: 'set'
集合類型有四種基本的操做,分別爲交集(&)、並集(|)、補集(^)、差集(-),以下表:3d
演示以下:code
>>> S = {1,2,3,4,5} >>> T = {4,5,6,7,8} >>> S-T {1, 2, 3} >>> S|T {1, 2, 3, 4, 5, 6, 7, 8} >>> S&T {4, 5} >>> S^T {1, 2, 3, 6, 7, 8}
集合類型有一些經常使用的操做函數或方法,以下表:blog
這些函數或方法的使用與普通函數或方法一致,前面的教程中已經有演示,這裏僅演示較爲特殊的set()函數。
set()函數將其餘的組合數據變成集合類型,返回結果是一個無重複且排序任意的集合。set()函數也能夠生成空集合變量。演示以下:
>>> s = set() >>> s set()#表示空集合 >>> s = set("知之爲知之不知爲不知是知也") >>> s {'爲', '不', '是', '知', '也', '之'}#這種方法多用於去重,適合於任何組合數據類型。
序列類型是一維元素向量,元素之間存在前後關係,經過序號訪問。序列的基本思想和表示方法來源於數學中的數列概念。在數學中,數列S由n個數表示,分別爲s一、s2……sn-一、sn.每個數在數列中都有特定的序號,這些序號提供了辨別他們的索引號。
在Python序列類型中一樣如此。當須要訪問序列中的某個特定值時,只須要經過下標標出便可。Python中有不少數據類型都是序列類型,其中比較重要的是字符串類型、列表類型和元組類型。
序列類型都使用相同的索引體系,與以前介紹的字符串類型同樣,即正向遞增序號和反向遞減序號。一樣須要注意,正向遞增序號的第一個元素,其序列號爲0。
序列類型由一些通用的操做符和函數,以下表:
序列類型中較爲重要的字符串類型已經講解過了,列表類型將在下節介紹,還有一種很是重要的序列類型是元組類型,咱們將用元組類型來演示上述操做符和函數來同時熟悉元組類型和序列類型的操做。演示以下:
>>> t = (1,2,3,4.0,5.0,'6')#建立一個元組 >>> type(t) <class 'tuple'>#元組類型用tuple表示 >>> 1 in t True >>> 4.0 in t True >>> 4 in t True#這裏4和4.0是等值的 >>> 4.1 in t False#元組中不存在4.1 >>> "5.0" not in t True#字符串「5.0」不在元組中 >>> s = ("7","8") >>> t + s (1, 2, 3, 4.0, 5.0, '6', '7', '8')#兩個元組相加 >>> s * 2 ('7', '8', '7', '8')#將元組s重複兩次 >>> t[2] 3 >>> t[1:2] (2,)#數學上的左閉右開區間 >>> t[0:4:2] (1, 3)#在[0,4]的區間內,從0開始,步長爲2,第二個爲3,第三個超出區間,不選 >>> len(t) 6#元素數量,簡單易懂 >>> min(t)#元素之間不可比較,報錯 Traceback (most recent call last): File "<pyshell#28>", line 1, in <module> min(t) TypeError: unorderable types: str() < int() >>> max(s)#元素之間能夠比較 '8'#返回最大值 >>> t.index(2) 1#元素2的全部,只有一個,若是由重複元素,返回正向遞增序列號中較小的那個 >>> t.count(4.0) 1#元素4.0出現的次數
元組類型一旦定義就不能修改,在編程中不夠靈活,同時,元組類型的全部操做均可以由列表實現。所以,通常編程中,若是須要自定義變量,一般以列表類型替代元組類型使用。若是確認編程中確認不須要修改數據,能夠經過使用元組數據類型來節省資源。
元組類型主要在Python語法相關的場景使用,例如,當函數返回多個值時,實際返回的是一個元組類型。
映射類型是「鍵-值」數據類型的組合,每一個元素是一個鍵值對,即元素是(key,value),元素之間是無序的。鍵值對是一種二元關係,源於屬性和值的映射關係。
映射類型是序列類型的一種擴展,在序列類型中,採用從0開始的正向遞增序號進行具體元素值的索引。而映射類型則用用戶來定義的序號,即鍵,去索引具體的值。
鍵表示一個屬性,也能夠理解爲一個類別或項目,值是屬性和內容,鍵值對刻畫了一個屬性和它的值。鍵值對將映射關係結構化,用於存儲和表達。