教你python中什么是集合?(二)
今天馬哥教育要跟大家繼續分享文章教你Python中什么是集合?(二)集合支持len()方法進行元素數量的獲取,也支持max()方法和min方法獲取集合中的最大元素與最小元素。 Python入門新手和正在Python學習的小伙伴快來看一看吧,希望能夠對大家有所幫助 !
交集/并集/補集/差集
首先我們來看張圖,理解交集、并集、補集、差集的概念。
假設有集合A{1,2,3}和B{3,4,5}。
交集:A和B中相同部分的內容,{3}。
并集:A和B去重后的全部內容,{1,2,3,4,5}。
補集:A去除與B相交部分后的內容,{1,2}。
差集:A和B不相交部分的全部內容,{1,2,4,5}。
示例代碼:
# 創建集合 s1 = set('Python') s2 = set('PyCharm') # 交集操作:獲取兩個集合中共有元素。 print (s1 & s2) # 顯示輸出結果為:{'y', 'P', 'h'} print (s1.intersection(s2)) # 顯示輸出結果為:{'y', 'P', 'h'} # 并集操作:獲取兩個集合去除重復元素后的全部元素。 print (s1 | s2) # 顯示輸出結果為:{'y', 'a', 'C', 'o', 'P', 'n', 't', 'm', 'r', 'h'} print (s1.union(s2)) # 顯示輸出結果為:{'y', 'a', 'C', 'o', 'P', 'n', 't', 'm', 'r', 'h'} # 補集操作:獲取當前集合去除與另一集合交集元素后的全部元素。 print (s1 - s2) # 顯示輸出結果為:{'o', 't', 'n'} print (s1.difference(s2)) # 顯示輸出結果為:{'o', 't', 'n'} print (s2 - s1) # 顯示輸出結果為:{'m', 'a', 'r', 'C'} print (s2.difference(s1)) # 顯示輸出結果為:{'m', 'a', 'r', 'C'} # 差集操作:獲取兩個集合去除交集元素后的全部元素。 print (s1 ^ s2)? # 顯示輸出結果為:{'o', 't', 'm', 'a', 'r', 'n', 'C'} print (s1.symmetric_difference(s2)) # 顯示輸出結果為:{'o', 't', 'm', 'a', 'r', 'n', 'C'}
以上操作中,對集合本身內容并無影響,大家可以在執行以上代碼后,繼續顯示輸出s1和s2的內容,能夠看到沒有任何變化。
接下來,我們再來看幾個方法,這些方法會改變集合內容。
第一種:difference_update(set) 函數,能夠將當前集合和指定集合進行補集運算,并將當前集合內容更新為運算結果。
示例代碼:
s1=set('1234') s2=set('456') s1.difference(s2) # 該操作對s1內容無影響 print (s1) # s1無變化,顯示輸出結果為:{'3', '4', '2', '1'} s1.difference_update(s2) # 更新集合s1的內容為s1-s2后的結果 print (s1) # s1內容被更新,顯示輸出結果為:{'3', '2', '1'}
第二種:intersection_update(set) 函數,能夠將當前集合和指定集合進行交集運算,并將當前集合內容更新為運算結果。
示例代碼:
s1=set('1234') s2=set('456') s1.intersection_update(s2) # 更新集合s1的內容為s1 & s2后的結果 print (s1) # s1內容被更新,顯示輸出結果為:{'4'}
第三種:symmetric_difference_update(set) 函數,能夠將當前集合和指定集合進行差集運算,并將當前集合內容更新為運算結果。
示例代碼:
s1 = set('1234') s2 = set('456') s1.symmetric_difference_update(s2) # 更新集合s1的內容為s1 ^ s2后的結果 print(s1) # s1內容被更新,顯示輸出結果為:{'6', '3', '2', '5', '1'}
成員關系
Python中提供了一些方法,讓我們能夠判斷一個集合中是否包含某一元素;
也可以判斷一個集合是否另一個集合的子集或超集。
還可以判斷一個集合與另一個集合是否沒有交集。
在之前我們接觸過“in”這操作符,可以用來判斷操作符前方的值是否被后方的序列包含(成員關系)。
另外,我們還可以使用“not in”,判斷操作符前方的值是否未被后方的序列包含(非成員關系)。
在集合中,我們同樣可以使用這兩個操作符。
另外,我們還可以通過以下方法,判斷一個集合是否另外一個集合的子集或超集以及沒有交集。
isdisjoint(set):可以判斷集合是否與指定集合不存在交集,參數set為集合;如果成立返回結果為True,否則為False。
issubset(set):可以判斷集合是否指定集合的子集,參數set為集合;如果成立返回結果為True,否則為False。
issuperset(set):可以判斷集合是否指定集合的超集,參數set為集合;如果成立返回結果為True,否則為False。
示例代碼:
s1 = set('好好學習') s2 = set('天天想上') s3 = set('好好學習天天想上') print ('好' in s1) # 顯示輸出結果為:True print ('好' not in s2) # 顯示輸出結果為:True print (s1.isdisjoint(s2)) # 顯示輸出結果為:True print (s1.issubset(s3)) # 顯示輸出結果為:True print (s3.issuperset(s1)) # 顯示輸出結果為:True
復制集合
使用copy()方法能夠對集合進行復制。
大家通過下方代碼即可理解復制的用途。
示例代碼:
a = set('小樓一夜聽春語') # 創建集合存入變量a b = a # 創建變量b引用變量a的集合 c = a.copy() # 創建變量c復制變量a的值 print (a) # 顯示輸出結果為:{'春', '夜', '樓', '聽', '語', '小', '一'} print (b) # 顯示輸出結果為:{'春', '夜', '樓', '聽', '語', '小', '一'} print (c) # 顯示輸出結果為:{'春', '夜', '樓', '聽', '語', '小', '一'} a.remove('一') # 刪除變量a中集合的一個元素 print (a) # 變量a發生改變,顯示輸出結果為:{'春', '夜', '樓', '聽', '語', '小'} print (b) # 變量b因為引用變量a,同樣發生改變,顯示輸出結果為:{'春', '夜', '樓', '聽', '語', '小'} print (c) # 變量c沒有改變,顯示輸出結果為:{'春', '夜', '樓', '聽', '語', '小', '一'}
如果還不能夠理解,我們可以看下面這張圖。
代碼中,b = a實際上是將b指向了a的內容,所以當a的內容發生變化時,b同步發生了變化。
而c = a.copy()則是將a的內容真正進行了復制,不再受a的變化影響。
以上就是馬哥教育今天為大家分享的關于教你Python中什么是集合(二)的文章,希望本篇文章能夠對正在從事Python相關工作的小伙伴們有所幫助,想要了解更多相關知識記得關注馬哥教育官網,每天都會有大量優質內容與大家分享!
聲明:文章來源于網絡,侵刪!