Python 中的集合,和數學中的集合概念同樣,用來保存不重複的元素,即集合中的元素都是惟一的,互不相同。
從形式上看,和字典相似,Python 集合會將全部元素放在一對大括號 {} 中,相鄰元素之間用「,」分隔,以下所示:python
{element1,element2,...,elementn}
其中,elementn 表示集合中的元素,個數沒有限制。
從內容上看,同一集合中,只能存儲不可變的數據類型,包括整形、浮點型、字符串、元組,沒法存儲列表、字典、集合這些可變的數據類型,不然 Python 解釋器會拋出 TypeError 錯誤。好比說:shell
>>> {{'a':1}} Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> {{'a':1}} TypeError: unhashable type: 'dict' >>> {[1,2,3]} Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> {[1,2,3]} TypeError: unhashable type: 'list' >>> {{1,2,3}} Traceback (most recent call last): File "<pyshell#10>", line 1, in <module> {{1,2,3}} TypeError: unhashable type: 'set'
而且須要注意的是,數據必須保證是惟一的,由於集合對於每種數據元素,只會保留一份。例如:函數
>>> {1,2,1,(1,2,3),'c','c'} {1, 2, 'c', (1, 2, 3)}
因爲 Python 中的 set 集合是無序的,因此每次輸出時元素的排序順序可能都不相同。學習
其實,Python 中有兩種集合類型,一種是 set 類型的集合,另外一種是 frozenset 類型的集合,它們惟一的區別是,set 類型集合能夠作添加、刪除元素的操做,而 forzenset 類型集合不行。本節先介紹 set 類型集合,後續章節再介紹 forzenset 類型集合。spa
Python 提供了 2 種建立 set 集合的方法,分別是使用 {} 建立和使用 set() 函數將列表、元組等類型數據轉換爲集合。.net
在 Python 中,建立 set 集合能夠像列表、元素和字典同樣,直接將集合賦值給變量,從而實現建立集合的目的,其語法格式以下:code
setname = {element1,element2,...,elementn}
其中,setname 表示集合的名稱,起名時既要符合 Python 命名規範,也要避免與 Python 內置函數重名。
舉個例子:對象
a = {1,'c',1,(1,2,3),'c'} print(a)
運行結果爲:排序
{1, 'c', (1, 2, 3)}
set() 函數爲 Python 的內置函數,其功能是將字符串、列表、元組、range 對象等可迭代對象轉換成集合。該函數的語法格式以下:element
setname = set(iteration)
其中,iteration 就表示字符串、列表、元組、range 對象等數據。
例如:
set1 = set("c.biancheng.net") set2 = set([1,2,3,4,5]) set3 = set((1,2,3,4,5)) print("set1:",set1) print("set2:",set2) print("set3:",set3)
運行結果爲:
set1: {'a', 'g', 'b', 'c', 'n', 'h', '.', 't', 'i', 'e'} set2: {1, 2, 3, 4, 5} set3: {1, 2, 3, 4, 5}
注意,若是要建立空集合,只能使用 set() 函數實現。由於直接使用一對 {},Python 解釋器會將其視爲一個空字典。
因爲集合中的元素是無序的,所以沒法向列表那樣使用下標訪問元素。Python 中,訪問集合元素最經常使用的方法是使用循環結構,將集合中的數據逐一讀取出來。
例如:
a = {1,'c',1,(1,2,3),'c'} for ele in a: print(ele,end=' ')
運行結果爲:
# set集合自動將重複的項刪除 1 c (1, 2, 3)
因爲目前還沒有學習循環結構,以上代碼初學者只需初步瞭解,後續學習循環結構後天然會明白。
和其餘序列類型同樣,手動函數集合類型,也可使用 del() 語句,例如:
a = {1,'c',1,(1,2,3),'c'} print(a) del(a) print(a)
運行結果爲:
{1, 'c', (1, 2, 3)} Traceback (most recent call last): File "C:\Users\mengma\Desktop\1.py", line 4, in <module> print(a) NameError: name 'a' is not defined
Python set 集合最經常使用的操做是向集合中添加、刪除元素,以及集合之間作交集、並集、差集等運算。受到篇幅的限制,這些知識會放到下節進行詳細講解。