Python學習10.14:Python set集合詳解

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建立set集合

Python 提供了 2 種建立 set 集合的方法,分別是使用 {} 建立和使用 set() 函數將列表、元組等類型數據轉換爲集合。.net

1) 使用 {} 建立

在 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)}

2) set()函數建立集合

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訪問set集合元素

因爲集合中的元素是無序的,所以沒法向列表那樣使用下標訪問元素。Python 中,訪問集合元素最經常使用的方法是使用循環結構,將集合中的數據逐一讀取出來。

例如:

a = {1,'c',1,(1,2,3),'c'}

for ele in a:
    print(ele,end=' ')

運行結果爲:

# set集合自動將重複的項刪除
1 c (1, 2, 3)

因爲目前還沒有學習循環結構,以上代碼初學者只需初步瞭解,後續學習循環結構後天然會明白。

Python刪除set集合

和其餘序列類型同樣,手動函數集合類型,也可使用 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 集合最經常使用的操做是向集合中添加、刪除元素,以及集合之間作交集、並集、差集等運算。受到篇幅的限制,這些知識會放到下節進行詳細講解。

相關文章
相關標籤/搜索