集合set - Python 教學 - STEAM 教育學習網
文章推薦指數: 80 %
交集、聯集、差集、對稱差集
集合set
集合(set)就像是「只有鍵,沒有值」的字典,一個集合裡所有的鍵都不會重複,因為集合不會包含重複的資料的特性,常用來進行去除重複的字元、或判斷元素間是否有交集、聯集或差集之類的關聯性。
快速導覽:建立集合、add()加入項目、移除項目、交集、聯集、差集、對稱差集、子集合、超集合、len()取得長度、in檢查是否存在、複製字典
本篇使用的Python版本為3.7.12,所有範例可使用GoogleColab實作,不用安裝任何軟體(參考:使用GoogleColab)
建立集合
集合由「數字、字串或布林」所組成,同一個集合裡的項目,可以是不同的型別,建立集合有兩種方式:
set()
使用set()可以建立空集合,或將串列、tuple、字串或字典轉換為集合,使用的方法為「set(要變成集合的元素)」。
如果建立時出現重複的項目,只會保留一個,如果是字典,只會保留鍵,如果是布林,True等同1,False等同0。
a=set()
b=set([1,2,3,4,5,1,2,3,4,5])
c=set({'x':1,'y':2,'z':3})
d=set('hello')
print(a)#set()
print(b)#{1,2,3,4,5}只留下不重複的部分
print(c)#{'x','y','z'}如果是字典,只保留鍵
print(d)#{'l','o','h','e'}只留下不重複的部分
大括號{}
如果不是空集合,可以使用「{項目}」建立集合(單純寫大括號,會變成「空字典」)。
a={0,1,2,3,'a','b',False}
print(a)#{0,1,2,3,'a','b'}False等同於0,所以只保留0
add()加入項目
使用「集合.add(項目)」可以將某個項目加入集合中,下面的程式會將x和y兩個文字加入a集合。
a={0,1,2,3,4,5}
a.add('x')
a.add('y')
print(a)#{0,1,2,3,4,5,'x','y'}
移除項目
有兩種方法可以移除集合裡的某個項目:
remove()
使用「集合.remove(項目)」,可以將指定的項目移除,不過如果該項目不存在,就會執行錯誤。
a={0,1,2,3,'x','y','z'}
a.remove('x')
print(a)#{0,1,2,3,'y','z'}
discard()
如果不希望在移除項目時發生執行錯誤的狀況,可以使用「集合.discard(項目)」,將指定項目移除
a={0,1,2,3,'x','y','z'}
a.discard('x')
a.discard('a')#不會發生錯誤
print(a)#{0,1,2,3,'y','z'}
交集、聯集、差集、對稱差集
集合有四種運算型態,分別是「交集、聯集、差集、對稱差集」,透過下圖可以了解四種運算型態。
使用集合運算有兩種方法,一種是使用特定的方法,另外一種則是使用「符號」(集合運算子)
集合
方法
運算子
交集
a.intersection(b)
a&b
聯集
a.union(b)
a|b
差集
a.difference(b)
a-b
對稱差集
a.symmetric_difference(b)
a^b
下方的程式,會呈現進行a對b進行集合運算後的結果。
a={1,2,3,4,5}
b={3,4,5,6,7}
#交集
print(a.intersection(b))#{3,4,5}
print(a&b)#{3,4,5}
#聯集
print(a.union(b))#{1,2,3,4,5,6,7}
print(a|b)#{1,2,3,4,5,6,7}
#差集
print(a.difference(b))#{1,2}
print(a-b)#{1,2}
#對稱差集
print(a.symmetric_difference(b))#{1,2,6,7}
print(a^b)#{1,2,6,7}
子集合、超集合
假設有A、B兩個集合,超集合和子集合的關係可以參考下圖:
集合
說明
超集合
A完全包含B,A和B所包含的元素可能完全相同
真超集合
A完全包含B,且具有B沒有的的元素
子集合
B完全被A包含,A和B所包含的元素可能完全相同
真子集合
B完全被A包含,且A具有B沒有的的元素
下面的程式列出四個集合,使用「大於、小於、等於」可以呈現彼此的關係,從印出的結果可以看到各個集合之間的關係。
a={1,2,3,4,5,6,7}
b={3,4,5,6,7}
c={1,2,3,4,5,6,7}
d={6,7,8,9}
print(a<=a)#True自己是自己的子集合
print(b<=a)#Trueb是a的子集合
print(b
延伸文章資訊
- 1Python Set union() 方法 - 菜鸟教程
Python Set union() 方法Python 集合描述union() 方法返回两个集合的并集,即包含了所有集合的元素,重复的元素只会出现一次。 语法union() 方法语法: set....
- 2Python list並集union, 交集intersection, 差集difference - IT閱讀
python的集合set和其他語言類似,是一個無序不重複元素集, 可用於消除重複元素。 支援union(聯合), intersection(交), difference(差)和sysmmetri...
- 3Python 學習筆記#006:序對Tuple、集合Set 與字典Dict 的介紹 ...
Python 中的集合也跟數學的集合一樣,有聯集(Union)、交集(Intersection)、差集(Difference)等不同的運算方式。 set.union(S) :S1|S2,回傳 ...
- 4[Python] 學習使用集合(Set) - 通訊雜記
宣告與建立集合(Set) · 集合加入與刪除元素 · 集合可使用的函式 · 判斷元素是否存在於集合中 · 利用for 迴圈來印出集合 · 聯集交集差集對稱差集 · 子集合與超 ...
- 5Python 3.1 快速導覽- 集合的union() - 程式語言教學誌
Python 3.1 快速導覽- 集合的union(). 集合(set) 與原封集合(frozenset) 型態(type) 的union() 方法(method) ,取得s1 與s2 的聯集 ...