亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

教你python中什么是集合?(二)

今天馬哥教育要跟大家繼續(xù)分享文章教你Python中什么是集合?(二)集合支持len()方法進(jìn)行元素?cái)?shù)量的獲取,也支持max()方法和min方法獲取集合中的最大元素與最小元素。 Python入門新手和正在Python學(xué)習(xí)的小伙伴快來看一看吧,希望能夠?qū)Υ蠹矣兴鶐椭?!

交集/并集/補(bǔ)集/差集

首先我們來看張圖,理解交集、并集、補(bǔ)集、差集的概念。

Python集合的學(xué)習(xí)

假設(shè)有集合A{1,2,3}和B{3,4,5}。

交集:A和B中相同部分的內(nèi)容,{3}。

并集:A和B去重后的全部內(nèi)容,{1,2,3,4,5}。

補(bǔ)集:A去除與B相交部分后的內(nèi)容,{1,2}。

差集:A和B不相交部分的全部內(nèi)容,{1,2,4,5}。

示例代碼:

# 創(chuàng)建集合
s1 = set('Python')
s2 = set('PyCharm')

# 交集操作:獲取兩個(gè)集合中共有元素。
print (s1 & s2)  # 顯示輸出結(jié)果為:{'y', 'P', 'h'}
print (s1.intersection(s2))  # 顯示輸出結(jié)果為:{'y', 'P', 'h'}

# 并集操作:獲取兩個(gè)集合去除重復(fù)元素后的全部元素。
print (s1 | s2)  # 顯示輸出結(jié)果為:{'y', 'a', 'C', 'o', 'P', 'n', 't', 'm', 'r', 'h'}
print (s1.union(s2))  # 顯示輸出結(jié)果為:{'y', 'a', 'C', 'o', 'P', 'n', 't', 'm', 'r', 'h'}

# 補(bǔ)集操作:獲取當(dāng)前集合去除與另一集合交集元素后的全部元素。
print (s1 - s2)  # 顯示輸出結(jié)果為:{'o', 't', 'n'}
print (s1.difference(s2))  # 顯示輸出結(jié)果為:{'o', 't', 'n'}
print (s2 - s1)  # 顯示輸出結(jié)果為:{'m', 'a', 'r', 'C'}
print (s2.difference(s1))  # 顯示輸出結(jié)果為:{'m', 'a', 'r', 'C'}

# 差集操作:獲取兩個(gè)集合去除交集元素后的全部元素。
print (s1 ^ s2)? # 顯示輸出結(jié)果為:{'o', 't', 'm', 'a', 'r', 'n', 'C'}
print (s1.symmetric_difference(s2))  # 顯示輸出結(jié)果為:{'o', 't', 'm', 'a', 'r', 'n', 'C'}

以上操作中,對集合本身內(nèi)容并無影響,大家可以在執(zhí)行以上代碼后,繼續(xù)顯示輸出s1和s2的內(nèi)容,能夠看到?jīng)]有任何變化。

接下來,我們再來看幾個(gè)方法,這些方法會改變集合內(nèi)容。

第一種:difference_update(set) 函數(shù),能夠?qū)?dāng)前集合和指定集合進(jìn)行補(bǔ)集運(yùn)算,并將當(dāng)前集合內(nèi)容更新為運(yùn)算結(jié)果。

示例代碼:

s1=set('1234')
s2=set('456')

s1.difference(s2) # 該操作對s1內(nèi)容無影響
print (s1) # s1無變化,顯示輸出結(jié)果為:{'3', '4', '2', '1'}
s1.difference_update(s2) # 更新集合s1的內(nèi)容為s1-s2后的結(jié)果
print (s1) # s1內(nèi)容被更新,顯示輸出結(jié)果為:{'3', '2', '1'}

第二種:intersection_update(set) 函數(shù),能夠?qū)?dāng)前集合和指定集合進(jìn)行交集運(yùn)算,并將當(dāng)前集合內(nèi)容更新為運(yùn)算結(jié)果。

示例代碼:

s1=set('1234')
s2=set('456')

s1.intersection_update(s2) # 更新集合s1的內(nèi)容為s1 & s2后的結(jié)果
print (s1) # s1內(nèi)容被更新,顯示輸出結(jié)果為:{'4'}

第三種:symmetric_difference_update(set) 函數(shù),能夠?qū)?dāng)前集合和指定集合進(jìn)行差集運(yùn)算,并將當(dāng)前集合內(nèi)容更新為運(yùn)算結(jié)果。

示例代碼:

s1 = set('1234')
s2 = set('456')

s1.symmetric_difference_update(s2)  # 更新集合s1的內(nèi)容為s1 ^ s2后的結(jié)果
print(s1)  # s1內(nèi)容被更新,顯示輸出結(jié)果為:{'6', '3', '2', '5', '1'}

成員關(guān)系

Python中提供了一些方法,讓我們能夠判斷一個(gè)集合中是否包含某一元素;

也可以判斷一個(gè)集合是否另一個(gè)集合的子集或超集。

還可以判斷一個(gè)集合與另一個(gè)集合是否沒有交集。

Python集合的學(xué)習(xí)

在之前我們接觸過“in”這操作符,可以用來判斷操作符前方的值是否被后方的序列包含(成員關(guān)系)。

另外,我們還可以使用“not in”,判斷操作符前方的值是否未被后方的序列包含(非成員關(guān)系)。

在集合中,我們同樣可以使用這兩個(gè)操作符。

另外,我們還可以通過以下方法,判斷一個(gè)集合是否另外一個(gè)集合的子集或超集以及沒有交集。

isdisjoint(set):可以判斷集合是否與指定集合不存在交集,參數(shù)set為集合;如果成立返回結(jié)果為True,否則為False。

issubset(set):可以判斷集合是否指定集合的子集,參數(shù)set為集合;如果成立返回結(jié)果為True,否則為False。

issuperset(set):可以判斷集合是否指定集合的超集,參數(shù)set為集合;如果成立返回結(jié)果為True,否則為False。

示例代碼:

s1 = set('好好學(xué)習(xí)')
s2 = set('天天想上')
s3 = set('好好學(xué)習(xí)天天想上')

print ('好' in s1) # 顯示輸出結(jié)果為:True
print ('好' not in s2) # 顯示輸出結(jié)果為:True
print (s1.isdisjoint(s2))  # 顯示輸出結(jié)果為:True
print (s1.issubset(s3))  # 顯示輸出結(jié)果為:True
print (s3.issuperset(s1))  # 顯示輸出結(jié)果為:True

復(fù)制集合

使用copy()方法能夠?qū)线M(jìn)行復(fù)制。

大家通過下方代碼即可理解復(fù)制的用途。

示例代碼:

a = set('小樓一夜聽春語')  # 創(chuàng)建集合存入變量a
b = a  # 創(chuàng)建變量b引用變量a的集合
c = a.copy()  # 創(chuàng)建變量c復(fù)制變量a的值
print (a)  # 顯示輸出結(jié)果為:{'春', '夜', '樓', '聽', '語', '小', '一'}
print (b)  # 顯示輸出結(jié)果為:{'春', '夜', '樓', '聽', '語', '小', '一'}
print (c)  # 顯示輸出結(jié)果為:{'春', '夜', '樓', '聽', '語', '小', '一'}

a.remove('一')  # 刪除變量a中集合的一個(gè)元素
print (a)  # 變量a發(fā)生改變,顯示輸出結(jié)果為:{'春', '夜', '樓', '聽', '語', '小'}
print (b)  # 變量b因?yàn)橐米兞縜,同樣發(fā)生改變,顯示輸出結(jié)果為:{'春', '夜', '樓', '聽', '語', '小'}
print (c)  # 變量c沒有改變,顯示輸出結(jié)果為:{'春', '夜', '樓', '聽', '語', '小', '一'}

如果還不能夠理解,我們可以看下面這張圖。

Python集合的學(xué)習(xí)

代碼中,b = a實(shí)際上是將b指向了a的內(nèi)容,所以當(dāng)a的內(nèi)容發(fā)生變化時(shí),b同步發(fā)生了變化。

而c = a.copy()則是將a的內(nèi)容真正進(jìn)行了復(fù)制,不再受a的變化影響。

以上就是馬哥教育今天為大家分享的關(guān)于教你Python中什么是集合(二)的文章,希望本篇文章能夠?qū)φ趶氖翽ython相關(guān)工作的小伙伴們有所幫助,想要了解更多相關(guān)知識記得關(guān)注馬哥教育官網(wǎng),每天都會有大量優(yōu)質(zhì)內(nèi)容與大家分享!

聲明:文章來源于網(wǎng)絡(luò),侵刪!

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國內(nèi)好評如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!