我們?cè)谟龅揭恍﹩栴}的時(shí)候,使用集合的交集、并集和差集能夠更便捷的幫助我們?nèi)ソ鉀Q問題,看下面一個(gè)例子。
某學(xué)校有兩個(gè)班級(jí),班級(jí)A需要學(xué)習(xí)數(shù)學(xué)、語文、英語、物理、化學(xué)和生物,班級(jí)B需要學(xué)習(xí)數(shù)學(xué)、語文、英語、政治、地理和歷史。
我們可以直接看出A班級(jí)和B班級(jí)的交集為數(shù)學(xué)、語文和英語,并集為數(shù)學(xué)、語文、英語、物理、化學(xué)、生物、政治、地理、歷史,A和B的差集為物理、化學(xué)和生物。
那么怎么使用Python去完成這些運(yùn)算?
我們先在這里定義兩個(gè)集合,
A = {'數(shù)學(xué)','語文','英語','物理','化學(xué)','生物'} B = {'數(shù)學(xué)','語文','英語','政治','地理','歷史'}
1. 交集
我們使用集合求交集的時(shí)候可以采用兩種方式,一種是使用‘&’運(yùn)算符進(jìn)行操作,一種是使用intersection()方法來實(shí)現(xiàn)。
我們通過這兩種方法來分別求集合A和B的交集。
方法1——使用‘&’運(yùn)算符:
>>> A = {'數(shù)學(xué)','語文','英語','物理','化學(xué)','生物'} >>> B = {'數(shù)學(xué)','語文','英語','政治','地理','歷史'} >>> A & B {'英語', '語文', '數(shù)學(xué)'}
方法2——使用intersection()方法:
>>> A = {'數(shù)學(xué)','語文','英語','物理','化學(xué)','生物'} >>> B = {'數(shù)學(xué)','語文','英語','政治','地理','歷史'} >>> A.intersection(B) {'英語', '語文', '數(shù)學(xué)'}
因?yàn)槭乔蠼患虼薃和B的位置調(diào)換依然不影響結(jié)果。
2. 并集
使用集合求并集的方式同樣也是兩種方式,一種是使用‘|’運(yùn)算符進(jìn)行操作,一種是使用union()方法來實(shí)現(xiàn)。
方法1——使用‘|’運(yùn)算符
>>> A = {'數(shù)學(xué)','語文','英語','物理','化學(xué)','生物'} >>> B = {'數(shù)學(xué)','語文','英語','政治','地理','歷史'} >>> A | B {'英語', '物理', '語文', '政治', '化學(xué)', '數(shù)學(xué)', '生物', '地理', '歷史'}
方法2——使用union()方法
>>> A = {'數(shù)學(xué)','語文','英語','物理','化學(xué)','生物'} >>> B = {'數(shù)學(xué)','語文','英語','政治','地理','歷史'} >>> A.union(B) {'英語', '物理', '語文', '政治', '化學(xué)', '數(shù)學(xué)', '生物', '地理', '歷史'}
求并集的時(shí)候同樣不需要注意A和B的位置關(guān)系。
3. 差集
使用集合求差集的方式同樣也是兩種方式,一種是使用‘-’運(yùn)算符進(jìn)行操作,一種是使用difference()方法來實(shí)現(xiàn)。
方法1——使用‘-’運(yùn)算符
>>> A = {'數(shù)學(xué)','語文','英語','物理','化學(xué)','生物'} >>> B = {'數(shù)學(xué)','語文','英語','政治','地理','歷史'} >>> A - B {'物理', '生物', '化學(xué)'} >>> B - A {'政治', '歷史', '地理'}
方法2——使用difference()方法
>>> A = {'數(shù)學(xué)','語文','英語','物理','化學(xué)','生物'} >>> B = {'數(shù)學(xué)','語文','英語','政治','地理','歷史'} >>> A.difference(B) {'物理', '生物', '化學(xué)'} >>> B.difference(A) {'政治', '歷史', '地理'}
在方法2中注意A和B的位置不同的時(shí)候是有區(qū)別的,如果是A使用difference()方法,那么是輸出A中有而B中沒有的元素,如果是B使用difference()方法,那么是輸出B中有而A中沒有的元素。
4. 總結(jié)
學(xué)習(xí)完了集合,四種核心集合我們已經(jīng)基本掌握,接下來幾節(jié)我們來通過學(xué)習(xí)一些字符串的相關(guān)操作,學(xué)習(xí)字符串的過程中會(huì)穿插著前面簡(jiǎn)單介紹過但沒仔細(xì)講解的方法及操作。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程