Python學習筆記(六)Python組合數據類型


  在之前我們學會了數字類型,包括整數類型、浮點類型和復數類型,這些類型僅能表示一個數據,這種表示單一數據的類型稱為基本數據類型。然而,實際計算中卻存在大量同時處理多個數據的情況,這種需要將多個數據有效組織起來並統一表示,這種能夠表示多個數據的類型稱為組合數據類型

一、組合數據類型概述

組合數據類型更能夠將多個同類或不同類型組織起來,通過單一的表示使數據更有序、更容易。根據數據之間的關系,組合數據類型可以分為3類:序列類型、集合類型和映射類型

序列類型是一個元素向量,元素之間的存在先后關系,通過序號訪問,元素之間不排他。

集合類型是一個元素類型,元素之間無序,相同元素在集合中唯一存在。

映射類型是“鍵-值”數據項的組合,每個元素是一個鍵值對,表示為(key, value)。

 

1.序列類型

序列類型是一堆元素向量,元素之間存在先后關系,通過序號訪問。

Python中有很多數據類型都是序列類型,其中比較重要的是str(字符串)、tuple(元組)list(列表)可以看成是單一字符的有序序列,屬於序列類型。

序列類型有12個通用的操作符和函數

 

操 作 符 描         述
x in s 如果x是是的元素,返回True,否者返回False
x not in s 如果x不是s的元素,返回True,否則返回False
s + t 連接S和t
s * n 或  n * s 將序列s復制n次
s[i] 索引,返回序列的第i個元素
s[i:j] 分片,返回包含序列s第i到j個元素的子序列(不包含第j個元素)
s[i:j:k] 步驟分片,返回包含序列s第i到j個元素以k為步數的子序列
len(s) 序列s的元素個數(長度)
min(s) 序列s中的最小元素
max(s) 序列s中的最大元素
s.index(x(,i[,j])) 序列s中從i開始到j位置中第一次出現的元素x的位置
s.count(x) 序列中出現x的總次數

元組(tuple)是序列類型中比較特殊的類型,因為它一旦創建就不能被修改。Python中元組采用逗號和圓括號(可選)來表示,如:

>>>creature = "cat", "dog", "tiger", "bear"
       print(creature)
>>>('cat', 'dog', 'tiger', 'bear')

>>>creature = "cat", "dog", "tiger", "bear"
  all=(1,2,456,creature)  #元組中包含元組creature
  print(all)
  print(all[2])
  print(all[-1][2])
>>>(1, 2, 456, ('cat', 'dog', 'tiger', 'bear'))
>>>456
>>>tiger

其中,一個元組可以作為另一個元組的元素,可以采用多級索引獲取信息,例如上面的元組all中包含了元組creature,可以用all[-1][2]獲取對應元素值。

 

元組除了用於表達固定數據外,還常用於以下3種情況:函數多返回值、多變量同步賦值、循環遍歷,例如:

>>>def func(x):          #函數多返回值      
           return x,x*x;   

>>>a,b = 'dog','cat'  #多變量同步賦值

>>>import math        #循環遍歷
  for x,y in ((1,0),(2,5),(3,8)):
    print(math.hypot(x,y))    #求多個坐標值到原點的距離

 

2.集合類型

集合類型與數學中集合的概念一致,即包含0個或多個數據項的無序組合。

集合中的元素不可重復,元素類型只能是固定數據類型,例如集合、浮點數、字符串、元組等,列表、字典、和集合類型本身都是可變數據類型,不能作為集合的元素出現。

由於集合是無序組合,它沒有索引和位置的概念,不能分片,集合中元素可以動態增加和刪除。集合用大括號({})表示,可以用賦值語句生成一個集合,例如:

>>>S={100,200,(666,25),"YES",458}
        print(S)
>>>{100, 200, 458, 'YES', (666, 25)}

從上面可以看出,由於集合的元素是無序的,集合的打印效果與定義順序可以不一致。

集合類型有10個操作符

操 作 符 描    述
S-T 或 S.difference(T) 返回一個新集合,包括在集合S中但不在集合T中的元素
S-=T 或 S.difference_update(T) 更新集合S,包括在集合S中但不在集合T中的元素
S & T 或 S.intersection(T) 返回一個新集合,包括同時在集合S和T中的元素
S&=T 或 S.intersection_update(T) 更新集合S,包括同時在集合S和T中的元素
s=^T 或 S.symmetric-difference(T) 返回一個新集合,包括集合S和T中的元素,但不包括同時在其中的元素
s=^T 或 S.symmetric-difference_update(T) 更新集合S,包括集合S和T中的元素,但不包括同時在其中的元素
S|T 或 S.union(T) 返回一個新集合,包括集合S和T中的所有元素
S=|T 或 S.update(T) 更新集合S,包括集合S和T中的所有元素
S<=T 或 S.update(T) 如果S和T相同或S是T的子集,返回True,否則返回False,可以用S>T判斷S是否是T的真子集
S>=T 或 S.issuperset(T) 如果S和T相同或S是T的超集,返回True,否則返回False,可以用S>T判斷S是否是T的真超集

集合類型與其他類型最大的不同在於它不包含重復元素,因此,當需要對一維數據進行去重或進行數據重復處理時,一般通過集合來完成。

 

3.映射類型 

映射類型是“鍵-值”數據項的組合,每個元素是一個鍵值對,即元素是(key,value),元素之間是無序的。

鍵(key)表示一個屬性,也可以理解為一個類別或項目,值(value)是屬性的內容,鍵值對刻畫了一個屬性和它的值。鍵值對將映射關系結構化,用於存儲和表達。

在Python中,映射類型主要以字典(dict)體現。

 

二、列表類型和操作

列表是包含0個或多個對象引用的有序序列,沒有長度限制,可自由增刪元素,使用靈活。

1.列表類型的概念

列表(list)是包含0個或多個對象引用的有序序列,屬於序列類型。與元組不同,列表的長度和內容都是可變的,可自由對列表中的數據項進行增加、刪除或替換

2.列表類型的操作

函數或方法 描述
ls[i] = x 替換類表 ls 第 i 數據項為 x
ls[i:j] =l t 用列表 lt 替換列表 ls 中第 i 到第 j 項數據(不含第 j 項)
ls[i:j:k] = lt 用列表 lt 替換列表 ls 中第 i 到第j項以k為步數的數據(不含第j項)
del ls[i:j] 刪除列表 ls 第i到第 j 項數據,等價於ls[i:j]=[]
del ls[i:j:k] 刪除列表 ls 第 i 到第 j 項以 k 為步數的數據
ls += lt 或 ls.extend(lt) 將列表 lt 元素增加到列表 ls 中
ls *= n 更新列表 ls,其元素重復 n 次
ls.append(x) 在列表 s 最后增加一個元素 x
ls.clear() 刪除 ls 中的所有元素
ls.copy() 生成一個新列表,復制 ls 中的所有元素
ls.insert(i,x) 在列表 ls 的第 i 位置增加元素 x
ls.pop(i) 將列表 ls 中的第 i 項元素取出並刪除該元素
ls.remove(x) 將列表中出現的第一個元素 x 刪除
ls.reserve(x) 列表 ls 中的元素反轉

 

 

三、字典類型和操作

列表是存儲和檢索數據的有序序列。當訪問列表中的元素時,可以通過整數的索引來查找它,這個索引時元素在列表中的符號,列表的索引模式是“<整數序號>查找<被索引內容>”

 

1.字典類型的概念

通過任意鍵信息查找一組數據中值信息的過程叫做映射,Python語言中通過字典實現映射。Python語言中的字典可以通過大括號({})建立,建立模式如下:

{<鍵1>:<值1>, <鍵2>:<值2>, ... ,<鍵n>:<值n>}

其中,鍵和值通過冒號連接,不同鍵值對通過逗號隔開。

例如:

>>>Dic={"中國":"北京","美國":"華盛頓","法國":"巴黎"}
       print(Dic)
       print(Dic["中國"])    
>>>{'中國': '北京', '美國': '華盛頓', '法國': '巴黎'}
>>>中國

一般來說,字典中鍵值對的訪問模式如下,采用中括號格式:

<值> = <字典變量> [<鍵>]

 

2.字典類型的操作

與列表類似Python字典也有非常靈活的操作方法。使用大括號可以創建字典,並指定初始值,通過中括號可以增加新的元素,例如:

>>>Dic={"中國":"北京","美國":"華盛頓","法國":"巴黎"}
       Dic{"英國"}="倫敦"
       print(Dic)
>>>{"中國":"北京","美國":"華盛頓","法國":"巴黎","英國":"倫敦"}

注意:直接使用大括號({})生成一個空的字典。生成空集合需要使用函數set()。

字典類型的函數和方法:

函數和方法 描     述
<d>.keys() 返回所有的鍵信息
<d>.values() 返回所有的值信息 
<d>.items() 返回所有的鍵值對 
<d>.get(<key>,<default>) 鍵存在則返回相應值,否則返回默認值 
<d>.pop(<key>,<default>) 鍵存在則返回返回值,同時刪除鍵值對,否則返回默認值 
<d>.popitem() 隨機從字典中取出一個鍵值對,以元組(key,value)形式返回 
<d>.clear()  刪除所有的鍵值對 
 del<d>[<key>]  刪除字典中某一個鍵值對 
 <key>in<d> 如果鍵在字典中返回True,否則返回False 

與其他組合類型一樣,字典可以通過for-in語句對其元素進行遍歷,例如:

>>>Dic={"中國":"北京","美國":"華盛頓","法國":"巴黎"}
       for i in Dic:
           print(i)
>>>中國
   美國
   法國

所以,字典有以下一些基本原則:

(1)字典是一個鍵值對的集合,該集合以鍵為索引,一個鍵信息只對應一個值信息。

(2)字典中元素以鍵信息為索引訪問。

(3)字典長度是可變的,可以通過對鍵信息賦值實現增加或修改鍵值對。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM