站長在線零基礎(chǔ)Python完全自學(xué)教程18:Python中的集合完全解讀
歡迎你來到站長學(xué)堂,學(xué)習(xí)站長在線出品的在線課程《零基礎(chǔ)Python完全自學(xué)教程》今天給大家分享的是第18課《Python中的集合完全解讀》。本節(jié)課是一個大課,我分了這些知識點進
永久美國免備案虛擬主機1元1天,15元1月,100元1年,1000元永久
站長在線旗下答案網(wǎng)站,全站所有題目,免費查看答案和答案解析
歡迎你來到站長學(xué)堂,學(xué)習(xí)站長在線出品的在線課程《零基礎(chǔ) python完全自學(xué)教程》今天給大家分享的是第18課《 Python中的集合完全解讀》。本節(jié)課是一個大課,我分了這些知識點進行詳細講解:集合的概念和創(chuàng)建方法詳解、添加和刪除集合元素詳解、集合的交集、并集、差集和對稱差集運算方法詳解。
18.1、Python中集合的概念和創(chuàng)建方法詳解
在前面的教程中我們學(xué)習(xí)了列表、元組、字典,本文開始講解序列里面的另一個常用結(jié)構(gòu)--集合。
18.1.1、在Python中集合的概念
Python中的集合(set)與數(shù)學(xué)中的集合概念類似,也是用于保存不重復(fù)的元素。
它有可變集合(set)和不可變集合(frozenset)兩種。其中,本節(jié)所要介紹的set集合是無序可變序列。
在形式上,集合的所有元素都放在一對大括號“{}”中,兩個相鄰元素間使用逗號“,”分隔。集合最好的應(yīng)用就是去重,因為集合中的每個元素都是唯一的。
這個和字典類似,字典也是放在“{}”中,不同的是字典在“{}”中是“鍵值對”,而集合中每一個元素都是獨立存在的。
站長在線溫馨提示:集合在數(shù)學(xué)中的定義是:由一個或多個確定的元素所構(gòu)成的整體。
集合最常用的操作就是創(chuàng)建集合,以及集合的添加、刪除、交集、并集和差集等運算,本節(jié)課開始講解集合的創(chuàng)建。
18.1.2、在Python中創(chuàng)建集合
在Python中提供了兩種創(chuàng)建集合的方法,一種是直接使用“{}”創(chuàng)建;另一種是通過set()函數(shù)將列表、元組等可迭代對象轉(zhuǎn)換為集合。
注意:創(chuàng)建一個空集合必須用 set() 而不是 {},因為 {} 是用來創(chuàng)建一個空字典。如下代碼所示:
a = {}
print(a)
print(type(a))
運行結(jié)果為:
{}
<class 'dict'>
>>>
18.1.2.1、在Python中直接使用“{}”創(chuàng)建集合。
在Python中,創(chuàng)建set集合也可以像列表、元組和字典一樣,直接將集合賦值給變量,從而實現(xiàn)創(chuàng)建集合,即直接使用大括號“{}”創(chuàng)建。語法格式如下:
集合名 = {元素1,元素2,...元素n}
站長在線提示你,在集合中,元素的數(shù)量沒有限制,數(shù)據(jù)的類型只要是Python中支持的數(shù)據(jù)類型都可以。
在上面我們談到了集合的每一個元素都是唯一的,如果輸入了重復(fù)的元素,Python會自動保留一個,如下:
例如,下面每一行的代碼都會創(chuàng)建一個集合:
name = {'美琳','夢潔','雪麗','美蓮'}
age = {18,19,19,18}
hunhe = {66,"Python",('人生苦短','我用Python')}
print(name)
print(age)
print(hunhe)
運行代碼,結(jié)果為:
{'雪麗', '美蓮', '美琳', '夢潔'}
{18, 19}
{('人生苦短', '我用Python'), 66, 'Python'}
>>>
因為在Python中的set集合是無序的,因此每次輸出的結(jié)果,可能可能不同,如我第二次運行代碼的結(jié)果是:
{'美琳', '夢潔', '美蓮', '雪麗'}
{18, 19}
{'Python', ('人生苦短', '我用Python'), 66}
>>>
18.1.2.2、在Python中使用set()函數(shù)創(chuàng)建集合
在Python中,可以使用set()函數(shù)將列表、元組等其他可迭代對象轉(zhuǎn)換為集合。set()函數(shù)的語法格式如下:
setname = set(iteration)
參數(shù)說明如下:
setname:表示集合名稱;
iteration:表示要轉(zhuǎn)換為集合的可迭代對象,可以是列表、元組、range對象等。另外,也可以是字符串,如果是字符串,返回的集合將是包含全部不重復(fù)字符的集合。
例如,下面的每行代碼都可以創(chuàng)建一個集合。
set1 = set('我是中國人,我愛自己的祖國')
set2 = set([3.1415926535,99.99])
set3 = set(('Python的設(shè)計哲學(xué)','優(yōu)雅','明確','簡單'))
print(set1)
print(set2)
print(set3)
運行結(jié)果如下:
{'己', '的', '中', '是', '自', ',', '祖', '我', '人', '愛', '國'}
{99.99, 3.1415926535}
{'簡單', '明確', 'Python的設(shè)計哲學(xué)', '優(yōu)雅'}
>>>
站長在線提醒你:在Python中創(chuàng)建集合推薦使用set()函數(shù)添加哦!
18.2、在Python中添加和刪除集合元素詳解
集合是可變序列,所以在創(chuàng)建集合后,還可以對其添加或者刪除元素。下面站長在線就對如何添加和刪除集合元素進行詳細解讀。
18.2.1、在Python中添加集合元素
18.2.1.1、在Python中向集合里面添加元素可以使用add()方法實現(xiàn)。
其中添加元素又分為添加單個元素和多個元素之分。
18.2.1.1.1、使用add()方法實現(xiàn)添加單個集合元素。
語法如下:
setname.add(element)
其中,setname表示要添加元素的集合;element表示要添加的元素內(nèi)容。這里只能使用字符串、數(shù)字及布爾類型的True或者False等,不能使用列表、元組等可迭代對象。
如:某班有4位美女的美術(shù)成績比較好,最近新來了一個美女的美術(shù)成績也是比較好的,要求創(chuàng)建一個集合,然后向該集合添加一個名字,代碼如下:
name = {'美琳','夢潔','雪麗','美蓮'}
name.add('梅梅')
print(name)
運行結(jié)果如下:
{'雪麗', '梅梅', '夢潔', '美蓮', '美琳'}
>>>
添加單個元素還是可以的,添加多個元素呢?我們試試下面的代碼看看:
name = {'美琳','夢潔','雪麗','美蓮'}
name.add(['梅梅','紅紅','艷艷','芳芳'])
print(name)
運行結(jié)果為:
Traceback (most recent call last):
File "D:\Python\Python310\Doc\000.py", line 2, in <module>
name.add(['梅梅','紅紅','艷艷','芳芳'])
TypeError: unhashable type: 'list'
>>>
翻譯“TypeError: unhashable type: 'list'”的結(jié)果為:TypeError:不可哈希類型:'List',意思就是不能直接添加多個元素。
但是有沒有辦法使用add添加多個元素呢?答案還是有的,只是麻煩一點,多費一點精力而已,拐一個彎。下面來給大家解答:
18.2.1.1.2、使用add()方法實現(xiàn)添加多個集合元素。
我們定義兩個集合,使用add()方法,將第二個集合元素添加到第一個集合里面。
如:定義某班級上午的三節(jié)課程為一個集合,下午的三節(jié)課程為一個集合,最后輸出最新的集合,代碼如下:
a = {'語文','英語','數(shù)學(xué)'}
b = {'政治','歷史','地理'}
for i in b:
a.add(i)
print(a)
運行結(jié)果如下:
{'語文', '數(shù)學(xué)', '英語', '政治', '地理', '歷史'}
>>>
18.2.1.2、使用update()方法添加集合元素
name = {'美琳','夢潔','雪麗','美蓮'}
name.update(['梅梅'])
print(name)
運行結(jié)果如下:
{'梅梅', '夢潔', '雪麗', '美琳', '美蓮'}
>>>
站長在線溫馨提醒您,這里使用update()方法添加集合元素,添加的元素使用“[]”而不是使用不用或者小括號哦!
使用不使用[]就會出現(xiàn)不是我們想要的結(jié)果,如:
name = {'美琳','夢潔','雪麗','美蓮'}
name.update('梅梅')
print(name)
運行結(jié)果為:
{'雪麗', '夢潔', '美蓮', '美琳', '梅'}
>>>
這里面少了一個“梅”字,應(yīng)該是“梅梅”而不是“梅”
同樣使用小括號也是不行的,如:
name = {'美琳','夢潔','雪麗','美蓮'}
name.update(('梅梅'))
print(name)
運行結(jié)果:
{'美蓮', '梅', '雪麗', '美琳', '夢潔'}
>>>
這都不是我們想要的。
當(dāng)然使用使用update()方法除了可以添加一個元素以外,添加多個元素也是可以的哦!如:
name = {'美琳','夢潔','雪麗','美蓮'}
name.update(['梅梅','紅紅','艷艷','芳芳'])
print(name)
運行結(jié)果為:
{'美琳', '紅紅', '梅梅', '雪麗', '芳芳', '艷艷', '夢潔', '美蓮'}
>>>
所以說如果添加多個元素的話,update()方法比add()方法要簡單一點。
18.2.2、在Python中刪除集合元素
講完了添加集合元素,接下來就講解刪除集合元素了。
刪除集合元素的方法有4種有4種類型分別是:使用del命令刪除整個集合、使用clear()方法清空集合元素、使用pop()方法刪除最后一個元素、使用remove()方法刪除指定元素。下面站長在線來一一給大家講解:
18.2.2.1、使用del命令刪除整個集合
name = {'美琳','夢潔','雪麗','美蓮'}
del name # 刪除整個集合,不能有打印操作
運行結(jié)果如下:
>>>
18.2.2.2、使用clear()方法清空集合元素
name = {'美琳','夢潔','雪麗','美蓮'}
name.clear() # 清空集合元素
print(name)
運行結(jié)果如下:
set()
>>>
18.2.2.3、使用pop()方法刪除最后一個元素
name = {'美琳','夢潔','雪麗','美蓮'}
name.pop() # 刪除最后一個元素
print(name)
運行結(jié)果為:
{'雪麗', '美琳', '夢潔'}
>>>
18.2.2.4、使用remove()方法刪除指定元素
name = {'美琳','夢潔','雪麗','美蓮'}
name.remove('夢潔') # 刪除指定一個元素
print(name)
運行結(jié)果為:
{'美琳', '美蓮', '雪麗'}
>>>
當(dāng)然,我們在刪除集合元素的時候,不僅只是刪除一個元素,還會刪除多個元素,下面,我在介紹使用remove()方法刪除多個元素。
我們直接刪除多個元素看看,怎么一個效果:
a = {'語文', '數(shù)學(xué)', '英語', '政治', '地理', '歷史'}
a.remove(['政治', '地理', '歷史'])
print(a)
運行結(jié)果如下:
Traceback (most recent call last):
File "D:\Python\Python310\Doc\000.py", line 2, in <module>
a.remove(['政治', '地理', '歷史'])
TypeError: unhashable type: 'list'
>>>
錯誤的結(jié)果,和上面的錯誤一樣,但是,我還是可以找得到方法的,下面就正式介紹:
18.2.2.5、使用remove()方法刪除多個元素
使用remove()方法刪除多個元素,我們借鑒add添加多個元素的方法來操作,設(shè)置ab兩個集合,大集合刪除小集合的方法去實現(xiàn),代碼如下:
a = {'語文', '數(shù)學(xué)', '英語', '政治', '地理', '歷史'}
b = {'政治','歷史','地理'}
for i in b:
a.remove(i)
print(a)
運行結(jié)果如下:
{'語文', '英語', '數(shù)學(xué)'}
>>>
18.3、Python中集合的交集、并集、差集和對稱差集運算方法詳解
在Python中,集合最常用的操作就是進行交集、并集、差集和對稱差集的運算。
要想學(xué)習(xí)集合的交集、并集、差集和對稱差集運算方法,首先我們來了解這些名詞的含義:
18.3.1、集合運算的相關(guān)含義:
18.3.1.1、集合的交集的含義:
設(shè)A、B兩個集合,由所有屬于集合A且屬于集合B的元素所組成的集合,叫做集合A與集合B的交集。在Python中,進行交集運算時使用“&”符號。
18.3.1.2、集合的并集的含義:
給定兩個集合A、B,把他們所有的元素合并在一起組成的集合,叫做集合A與集合B的并集。在Python中,進行并集運算時使用“|”符號。
18.3.1.3、集合的差集的含義:
設(shè)A,B是兩個集合,則所有屬于A且不屬于B的元素構(gòu)成的集合,叫做集合A與集合B的差集。在Python中,進行差集運算時使用“-”符號。
18.3.1.4、集合的對稱差集的含義:
對稱差集也稱為對稱差分或者補集,設(shè)A,B是兩個集合,所有不相同的集合,叫做集合A與集合B的對稱差集(對稱差分或者補集)。在Python中,進行對稱差集運算時使用“^”符號。
18.3.2、集合的運算方法
上面都是概念性的描述,下面站長在線來舉實際的場景來對交集、并集、差集和對稱差集運算方法進行深入淺出的解讀。
場景模擬:某高中三年級,文科班高考的科目是語文、數(shù)學(xué)、英語、政治、歷史和地理。理科班高考的科目是語文、數(shù)學(xué)、英語、物理、化學(xué)和生物。
設(shè)定集合A為文科班高考的科目,集合B為理科班高考的科目。
A = {'語文','數(shù)學(xué)','英語','政治','歷史','地理'}
B = {'語文','數(shù)學(xué)','英語','物理','化學(xué)','生物'}
18.3.2.1、集合的交集運算方法
我們使用集合的交集運算的時候可以采用兩種方式,一種是使用“&”運算符進行操作,另一種是使用intersection()
方法來實現(xiàn)。
18.3.2.1.1、使用“&”運算符進行交集運算
A = {'語文','數(shù)學(xué)','英語','政治','歷史','地理'}
B = {'語文','數(shù)學(xué)','英語','物理','化學(xué)','生物'}
print(A & B) # 輸出集合A和集合B的交集
運行結(jié)果:
{'英語', '數(shù)學(xué)', '語文'}
>>>
18.3.2.1.2、使用intersection()
方法進行交集運算
A = {'語文','數(shù)學(xué)','英語','政治','歷史','地理'}
B = {'語文','數(shù)學(xué)','英語','物理','化學(xué)','生物'}
print(A.intersection(B)) # 輸出集合A和集合B的交集
運行結(jié)果:
{'英語', '語文', '數(shù)學(xué)'}
>>>
同理集合B和集合A的交集也是一樣。我這里就不重復(fù)了,自己去體驗一下。
18.3.2.2、集合的并集運算方法
集合的并集運算也有兩種方式,一種是使用“|”運算符進行操作,另一種是使用union()方法來實現(xiàn)。
18.3.2.2.1、使用“|”運算符進行并集運算
A = {'語文','數(shù)學(xué)','英語','政治','歷史','地理'}
B = {'語文','數(shù)學(xué)','英語','物理','化學(xué)','生物'}
print(A | B) # 輸出集合A和集合B的并集
運行結(jié)果如下:
{'數(shù)學(xué)', '生物', '政治', '物理', '地理', '化學(xué)', '語文', '英語', '歷史'}
>>>
18.3.2.2.2、使用union()方法進行并集運算
A = {'語文','數(shù)學(xué)','英語','政治','歷史','地理'}
B = {'語文','數(shù)學(xué)','英語','物理','化學(xué)','生物'}
print(A.union(B)) # 輸出集合A和集合B的并集
運行結(jié)果為:
{'英語', '語文', '地理', '生物', '政治', '化學(xué)', '數(shù)學(xué)', '物理', '歷史'}
>>>
同理集合B和集合A的并集也是一樣。自己去體驗一下吧!
18.3.2.3、集合的差集運算方法
集合的差集運算也有兩種方式,一種是使用“-”運算符進行操作,另一種是使用difference()方法來實現(xiàn)。
18.3.2.3.1、使用“-”運算符進行差集運算
A = {'語文','數(shù)學(xué)','英語','政治','歷史','地理'}
B = {'語文','數(shù)學(xué)','英語','物理','化學(xué)','生物'}
print(A - B) # 輸出集合A和集合B的差集
運行結(jié)果為:
{'歷史', '地理', '政治'}
>>>
上面是集合A和集合B的差集,但是集合B和集合A的差集就不是一樣的了哦!
A = {'語文','數(shù)學(xué)','英語','政治','歷史','地理'}
B = {'語文','數(shù)學(xué)','英語','物理','化學(xué)','生物'}
print(B - A) # 輸出集合B和集合A的差集
運行結(jié)果為:
{'化學(xué)', '生物', '物理'}
>>>
從上面可以看出,集合A和集合B的差集 與 集合B和集合A的差集是不一樣的,(A - B)是A中存在的部分,(B - A)是B中存在的部分。
18.3.2.3.2、使用difference()方法進行差集運算
A = {'語文','數(shù)學(xué)','英語','政治','歷史','地理'}
B = {'語文','數(shù)學(xué)','英語','物理','化學(xué)','生物'}
print(A.difference(B)) # 輸出集合A和集合B的差集
運行結(jié)果:
{'地理', '政治', '歷史'}
>>>
同理,使用difference()方法進行集合B和集合A的差集也是不同的
A = {'語文','數(shù)學(xué)','英語','政治','歷史','地理'}
B = {'語文','數(shù)學(xué)','英語','物理','化學(xué)','生物'}
print(B.difference(A)) # 輸出集合B和集合A的差集
運行結(jié)果:
{'物理', '化學(xué)', '生物'}
>>>
18.3.2.4、集合的對稱差集運算方法
集合的差集運算也有兩種方式,一種是使用“^”運算符進行操作,另一種是使用symmetric_difference()方法來實現(xiàn)。
18.3.2.4.1、使用“^”運算符進行對稱差集運算
A = {'語文','數(shù)學(xué)','英語','政治','歷史','地理'}
B = {'語文','數(shù)學(xué)','英語','物理','化學(xué)','生物'}
print(A ^ B) # 輸出集合A和集合B的對稱差集
運行結(jié)果為:
{'地理', '化學(xué)', '生物', '政治', '物理', '歷史'}
>>>
18.3.2.4.2、使用symmetric_difference()方法進行對稱差集運算
A = {'語文','數(shù)學(xué)','英語','政治','歷史','地理'}
B = {'語文','數(shù)學(xué)','英語','物理','化學(xué)','生物'}
print(A.symmetric_difference(B)) # 輸出集合A和集合B的對稱差集
運行結(jié)果為:
{'政治', '生物', '地理', '化學(xué)', '歷史', '物理'}
>>>
同樣的,集合B與集合A的對稱差集也是一樣,自己去體驗一下。
我們對集合的交集、并集、差集和對稱差集運算方法全部詳細的講解了一遍,通過運行結(jié)果,我們得出結(jié)論:
集合中進行交集、并集、對稱差集進行運算的時候,集合A與集合B,位置替換的時候,結(jié)果相同。
集合中進行差集運算的時候,集合A與集合B,位置替換的時候,結(jié)果不同,為前面那個集合獨立存在的部分。
下節(jié)課程預(yù)告:站長在線零基礎(chǔ)Python完全自學(xué)教程19:字符串的系列知識詳解
相關(guān)閱讀:
1、認識python
11、Python中的選擇語句
13、Python中的break語句、continue語句和pass語句
15、Python中的列表
本文地址:http://003188.cn/pythonjihe.html
阿里云虛擬主機1G空間,120元一年
香港、美國虛擬主機100元一年,1000元永久
騰訊云雙十一0.4折起,2核8G5M三年僅700元,2核4G8M三年僅198元
猜你喜歡