天天看點

4.18 Python set集合基本操作(添加、删除、交集、并集、差集)

Python set 集合最常用的操作是向集合中添加、删除元素,以及集合之間做交集、并集、差集等運算,本節将一一講解這些操作的具體實作。

向 set 集合中添加元素

set 集合中添加元素,可以使用 set 類型提供的 add() 方法實作,該方法的文法格式為:

setname.add(element)
           

其中,setname 表示要添加元素的集合,element 表示要添加的元素内容。

需要注意的是,使用 add() 方法添加的元素,隻能是數字、字元串、元組或者布爾類型(True 和 False)值,不能添加清單、字典、集合這類可變的資料,否則 Python 解釋器會報 TypeError 錯誤。例如:

a = {1,2,3}
a.add((1,2))
print(a)
a.add([1,2])
print(a)
           

運作結果為:

{(1, 2), 1, 2, 3}
Traceback (most recent call last):
 File "C:\Users\mengma\Desktop\1.py", line 4, in <module>
  a.add([1,2])
TypeError: unhashable type: 'list'
           

從set集合中删除元素

删除現有 set 集合中的指定元素,可以使用 remove() 方法,該方法的文法格式如下:

setname.remove(element)

使用此方法删除集合中元素,需要注意的是,如果被删除元素本就不包含在集合中,則此方法會抛出 KeyError 錯誤,例如:

a = {1,2,3}
a.remove(1)
print(a)
a.remove(1)
print(a)
           

運作結果為:

{2, 3}
Traceback (most recent call last):
 File "C:\Users\mengma\Desktop\1.py", line 4, in <module>
  a.remove(1)
KeyError: 1
           

上面程式中,由于集合中的元素 1 已被删除,是以當再次嘗試使用 remove() 方法删除時,會引發 KeyError 錯誤。

如果我們不想在删除失敗時令解釋器提示 KeyError 錯誤,還可以使用 discard() 方法,此方法和 remove() 方法的用法完全相同,唯一的差別就是,當删除集合中元素失敗時,此方法不會抛出任何錯誤。

例如:

a = {1,2,3}
a.remove(1)
print(a)
a.discard(1)
print(a)
           

運作結果為:

{2, 3}
{2, 3}
           

Python set集合做交集、并集、差集運算

集合最常做的操作就是進行交集、并集、差集以及對稱差集運算,首先有必要給大家普及一下各個運算的含義。

4.18 Python set集合基本操作(添加、删除、交集、并集、差集)

圖 1 集合示意圖

圖 1 中,有 2 個集合,分别為 set1={1,2,3} 和 set2={3,4,5},它們既有相同的元素,也有不同的元素。以這兩個集合為例,分别做不同運算的結果如表 1 所示。

運算操作 Python運算符 含義 例子
交集 & 取兩集合公共的元素 >>> set1 & set2 {3}
并集 | 取兩集合全部的元素 >>> set1 | set2 {1,2,3,4,5}
差集 - 取一個集合中另一集合沒有的元素 >>> set1 - set2 {1,2} >>> set2 - set1 {4,5}
對稱差集 ^ 取集合 A 和 B 中不屬于 A&B 的元素 >>> set1 ^ set2 {1,2,4,5}