Python元組(tuple)、字典(dict)和集合(set)詳解

2020-07-16 10:05:24
為了便於程式處理,主流程式語言均提供了集合型資料型別,如 C# 有陣列和 List,Java 有 Map、Set、List 等,PHP 有 array。Python 中的集合型資料型別主要有列表、元組、集合與字典四種。列表在上節教學已經介紹,本節教學主要介紹元組、集合和字典。

Python tuple字典

元組與列表功能相似,區別是列表中的元素可以修改,但元組中的元素不能修改。

元組使用成對的小括號定義,例如:

tuple1 = ('a', 'b', 2000, 2019)
tuple2 = (1, 2, 3, 4, 5)


當元組中只有一個元素時需要在元素後加逗號,否則定義元組的小括號會被當作運算子,例如:

tup1 = (1)
type(tup1)  #不加逗號,型別為整型
tup1 = (1,)
type(tup1)   #加上逗號,型別為元組

上述程式碼的執行結果如下所示:

>>> tup1 = (1)
>>> type(tup1)  #不加逗號,型別為整型
<class 'int'>
>>> tup1 = (1,)
>>> type(tup1)   #加上逗號,型別為元組
<class 'tuple'>


與列表相同,可以使用下標存取元組中的元素,例如:

tuple1 = ('a', 'b', 2000, 2019)
print(tuple1[2])

執行上述程式碼將得到元素 2000。

可以將多個元組連線組合成一個新的元組,例如:

tuple1 = ('a', 'b', 2000, 2019)
tuple2 = (1, 2, 3, 4)
print(tuple1 + tuple2)

上述程式碼的執行結果下所示:

>>> tuple1 = ('a', 'b', 2000, 2019)
>>> tuple2 = (1, 2, 3, 4)
>>> print(tuple1 + tuple2)
('a', 'b', 2000, 2019, 1, 2, 3, 4)


刪除列表使用 del 語句,例如:

a = ('a', 'b', 'c')
del a

+*in等運算子對元組同樣起作用,效果與列表類似;len( )、max( )、min( ) 等函數對元組的作用也與列表類似,此處均不再贅述。

Python set集合

集合是包含若干元素的列表,其特點是元素無序且無重複元素。定義集合使用成對的大括號{ }或 set( ) 函數,例如:

drawer = {'pen', 'pencil', 'ruler', 'eraser'}

注意,建立空集合必須使用 set( ) 函數。

Python 中集合的概念基本上反映了集合論對應的概念。兩個不同的集合可以執行交、並、補、差等運算,例如:

drawer = {'pen', 'pencil', 'ruler', 'eraser'}
desk = {'pen', 'book ', 'cup'}
drawer | desk   #兩個集合的並集
drawer & desk   #兩個集合的交集
drawer ^ desk    #兩個集合的交集的補集
drawer - desk    #兩個集合的差集

上述程式碼的執行結果如下所示:

>>> drawer = {'pen', 'pencil', 'ruler', 'eraser'}
>>> desk = {'pen', 'book', 'cup'}
>>> drawer | desk    #兩個集合的並集
{'book', 'pen', 'eraser', 'cup', 'ruler', 'pencil'}
>>> drawer & desk     #兩個集合的交集
{'pen'}
>>> drawer ^ desk       #兩個集合的交集的補集
{'ruler', 'eraser', 'pencil', 'book', 'cup'}
>>> drawer - desk          #兩個集合的差集
{'ruler', 'eraser', 'pencil'}


Python 中可以用於集合的函數主要有 add( )、clear( )、copy( )、discard( )、remove( )、pop( )、difference( )、intersection( )、union( ) 等。

add( ) 方法用於為集合新增一個元素,例如:

a={'a', 'b', 'c'}
a.add('d')
print(a)

上述程式碼的執行結果如下所示:

>>> a={'a', 'b', 'c'}
>>> a.add('d')
>>> print(a)
{'d', 'b', 'a', 'c'}


clear( ) 方法用於清空一個集合,例如:

a={'a', 'b', 'c'}
a.clear()
print(a)

上述程式碼的執行結果如下所示。

>>> a={'a', 'b', 'c'}
>>> a.clear()
>>> print(a)
set()


copy( ) 方法用於複製一個集合,例如:

a={'a', 'b', 'c'}
b = a.copy()
print(b)

上述程式碼的執行結果如下所示:

>>> a={'a', 'b', 'c'}
>>> b = a.copy()
>>> print(b)
{'b', 'a', 'c'}


discard( ) 方法用於刪除集合中一個指定元素,例如:

a={'a', 'b', 'c'}
a.discard('b')
print(a)

上述程式碼的執行結果如下所示:

>>> a={'a', 'b', 'c'}
>>> a.discard('b')
>>> print(a)
{'a', 'c'}

remove( ) 方法與 discard( ) 方法作用相同,區別在於 remove() 方法在移除集合中一個不存在的元素時會發生錯誤,而 discard( ) 方法不會。

pop() 方法用於從集合中隨機移除一個元素,例如:

a={'a', 'b', 'c', 'd' 'e', 'f', 'g'}
a.pop('b')
print(a)

多次執行上述程式碼的結果如下所示:

>>> a={'a', 'b', 'c', 'd','e', 'f', 'g'}
>>> a.pop()
'a'
>>> print(a)
{'b', 'f', 'c', 'd', 'g', 'e'}
>>> a={'a', 'b', 'c', 'd','e', 'f', 'g'}
>>> a.pop()
'c'
>>> print(a)
{'g', 'a', 'e', 'b', 'd', 'f'}


difference( )、intersection( )、union( ) 等方法分別用於計算兩個集合的差集、交集和並集,效果與“-”“&”“|”等運算子相似,此處不再贅述。

Python dict字典

字典可以儲存任意型別的物件,字典中的鍵值對分別儲存字串型下標及對應的內容。字典中的每個鍵和值之間使用冒號“:”分隔,鍵值對之間使用逗號“,”分隔,整個字典使用成對的大括號{ }定義,例如:

dict = {'A': '123', 'B': '45', 'C': '678'}


要存取字典中的值,需要使用中括號語法,例如:

print(dict['B'])

執行上述程式碼將返回字串“45”。

新增或修改字典中某個鍵值對中的值也是使用中括號語法,例如:

dict = {'A': '123', 'B': '45', 'C': '678'}
dict['D'] = '9'

當該鍵存在時修改對應的值,不存在時將該鍵值對新增到字典。

與列表、元組、集合相同,清空字典的內容使用 clear( ) 方法,刪除字典使用 del 命令,例如:

dict = {'A': '123', 'B': '45', 'C': '678'}
dict.clear()     #清空dict的內容
del dict['A']    #刪除dict字典中A鍵和對應的值
del dict          #刪除dict字典


字典有以下兩個特點:一是其中的鍵名不能重複,建立字典時若同一個鍵被多次賦值,則其值為最後一次賦值的內容;二是鍵一旦定義即不可更改,若要修改鍵名則意味著刪除原鍵值對並新建鍵值對。