1. 集合的基本概念
集合類型和數學集合中的概念一致,即包含0個或多個數據項的無序組合。集合元素不可重複,集合類型只能是固定的數據類型。
python編譯器中界定固定數據類型與否主要考察類型能否進行哈希運算。python中提供了一種同名的具體數據類型——集合(set)
由於集合是無序組合,他沒有索引和位置的概念,不能分片,集合中元素可以動態增加或刪除。
集合用大括號表示,可以用賦值語句生成一個集合,例如:
>>> s = {1,'dream',2,2,(3,4)}
>>> s
{1, 2, (3, 4), 'dream'}
通過集合元素的獨一無二性,可以過濾掉重複元素,這也是集合的很大一個用處。
1.1 set(x)函數
set(x)函數可以用於生成集合,輸入的參數可以是任何組合數據類型,返回結果是一個無重複且排序任意的集合。
1.2 集合類型的10個操作函數
操作函數及方法 | 描述 |
---|---|
s.add(x) | 如果數據項x不在集合中,則增加x到s中 |
s.clear() | 移除s中所有的數據項 |
s.copy() | 返回集合s的一個副本 |
s.pop() | 隨機返回s中的一個元素,如果集合爲空,返回KeyError異常 |
s.discard(x) | 如果x在集合中移除該元素,不在不報錯 |
s.remove(x) | 如果x在集合中移除該元素,不在返回KeyError異常 |
s.isdisjoint(T) | 如果s和T沒有相同的元素,返回True |
len(s) | 返回s中元素的個數 |
x (not) in s | x(不是)是s的元素,返回相應的判斷 |
2. 字典的基本概念
通過任意鍵信息查找一組數據中 值的信息的過程叫映射,python語言中通過字典實現映射。python語言中的字典可以用大括號建立,建立模式如下:
{<鍵1>:<值1>,<鍵2>:<值2>,...,<鍵n>:<值n>}
由於大括號表示集合,因此字典類型和集合有着類似的性質,即鍵值對之間沒有順序且不能重複。
2.1 字典的索引
字典中鍵值對的訪問模式如下,採用中括號格式:
<值> = <字典變量>[<鍵>]
例如:
>>> D = {'China':'BeiJing','France':'Paris','USA':'Washington DC'}
>>> D['China']
'BeiJing'
字典中對某個鍵值的修改可以通過中括號的訪問和賦值實現,例如:
>>> D['USA']='NK'
>>> print(D)
{'China': 'BeiJing', 'France': 'Paris', 'USA': 'NK'}
總結起來,字典是儲存可變數量鍵值的數據結構,鍵和值可以是任意數據類型,包括程序自定義的類型。python字典的效率非常高,可以儲存幾十萬項的內容。
2.2 字典的操作
可以直接使用大括號創建一個空的字典,並通過中括號向其中增加元素。
>>> d = {}
>>> d['2^2']=4
>>> print(d)
{'2^2': 4}
注:直接使用大括號生成的是字典,生成空集合需要使用函數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語句對其元素進行遍歷,語法結構如下:
for <變量名> in <字典名>:
<語句塊>
由於鍵值對中的鍵相當於索引,因此,for循環返回變量名是字典的索引值。如果需要獲得鍵對應的值,可以在語句塊中通過get()方法獲得。
>>> D = {'China':'BeiJing','France':'Paris','USA':'Washington DC'}
>>> for key in D:
print(key)
China
France
USA
2.3 字典小結
字典是實現鍵值對映射的數據結構,它採用固定數據類型的鍵數據作爲索引,十分靈活,具有處理任意長度、混合類型鍵值對的能力。爲了更好地認識和使用字典,請理解如下一些基本原則。
(1)字典是一個鍵值對的集合,該集合以鍵爲索引,一個鍵信息只對應一個值信息。
(2)字典中元素以鍵信息爲索引訪問。
(3)字典長度是可變的,可以通過對鍵信息賦值實現增加或修改鍵值對。