集合set - Python 教學 - STEAM 教育學習網

文章推薦指數: 80 %
投票人數:10人

交集、聯集、差集、對稱差集 集合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



請為這篇文章評分?