Python中的集合是什么以及如何使用它們?
數(shù)據(jù)存儲(chǔ)是當(dāng)今世界每個(gè)域所必需的。Python提供了不同類(lèi)型的數(shù)據(jù)結(jié)構(gòu)來(lái)組織數(shù)據(jù),這些數(shù)據(jù)結(jié)構(gòu)是Python認(rèn)證培訓(xùn)的重要組成部分。在Python中可用的所有數(shù)據(jù)結(jié)構(gòu)中,有些是可變的,有些是不可變的。在本文中,我將討論其中一種。Python中的集合是可變,可迭代和無(wú)序的數(shù)據(jù)結(jié)構(gòu)。這里是所有后續(xù)內(nèi)容的快速演練。
What is Set in Python?
When to use sets in Python?
How do you create a set?
Set Operations
Finding the length of a Set
Accessing Set elements
Adding elements to a Set
Removing Set elements
Union of Sets
Intersection of Sets
Difference of Sets
What are Frozen Sets?
How to Create Frozen Sets?
Accessing Frozen Set elements
Python中的設(shè)置是什么?
集合基本上是由無(wú)序元素的集合組成的數(shù)據(jù)類(lèi)型。這些元素可以是任何數(shù)據(jù)類(lèi)型,因?yàn)榕c數(shù)組不同,集合不是特定于類(lèi)型的。集是可變的(可變的),并且沒(méi)有元素的重復(fù)副本。集合的值未索引,因此無(wú)法對(duì)集合執(zhí)行索引操作。
例子:
My_Set={1,'s',7.8} print(My_Set)
輸出:??{'s',1,7.8}
輸出顯示存在的所有元素My_Set。
注意:整個(gè)集合是可變的,但是集合的元素不是可變的。
現(xiàn)在您知道了Python中的集合,讓我們繼續(xù)前進(jìn),了解何時(shí)使用集合。
什么時(shí)候在Python中使用集合?
在以下情況下使用Python中的集合-
數(shù)據(jù)順序無(wú)關(guān)緊要
您不需要數(shù)據(jù)元素中的任何重復(fù)
您需要執(zhí)行數(shù)學(xué)運(yùn)算,例如并集,交集等
現(xiàn)在,讓我們繼續(xù)前進(jìn),看看如何在Python中創(chuàng)建集合。
如何在Python中創(chuàng)建集合?
Python中的集合可以通過(guò)兩種方式創(chuàng)建:
將元素括在花括號(hào)內(nèi)
通過(guò)使用set()函數(shù)
1.使用花括號(hào):
Python中的集合是使用花括號(hào)({})創(chuàng)建的。
例子:
My_Set={1,'s',7.8} print(My_Set)
輸出:? ??{'s',1,7.8}
如您所見(jiàn),My_Set已創(chuàng)建。
2.使用set()函數(shù)
可以使用set()函數(shù)在Python中創(chuàng)建集合。
例子:
a=set({1,'b',6.9}) print(a)
輸出:??{1,'b',6.9}
您也可以使用相同的功能創(chuàng)建一個(gè)空集。
例子:
Empty_Set=set() print(Empty_Set)
輸出:?set()
上面的輸出顯示已創(chuàng)建一個(gè)名為Empty_Set的空集。
您可以將元素添加到此空集中。我將在以下主題中對(duì)此進(jìn)行介紹。
設(shè)定作業(yè)
可以對(duì)集合執(zhí)行許多操作,例如添加元素,刪除元素,查找集合的長(zhǎng)度等。要知道可以在集合上使用什么方法,可以使用dir()函數(shù)。
例子:
My_Set={1,'s',7.8} dir(My_Set)
輸出:
['__and __','__ class __','__ contains __','__ delattr __','__ dir __','__ doc __','__ eq __','__ format __','__ ge __','__ getattribute __','__ gt __','__ hash__',' __iand __','__ init __','__ init_subclass __','__ ior __','__ isub __','__ iter __','__ ixor __','__ le __','__ len __','__ lt __','__ ne __','__ new __','__ or__' ,'__ rand __','__ reduce __','__ reduce_ex __','__ repr __','__ ror __','__ rsub __','__ rxor __','__ setattr __','__ sizeof __','__ str __','__ sub __','__ subclasshook__',' __xor __','add','clear','copy','difference','difference_update','discard','intersection','intersection_update','isdisjoint','issubset','issuperset','pop' ,“刪除”,“對(duì)稱(chēng)差異”,“對(duì)稱(chēng)差異更新”,“聯(lián)合”,“更新”]
輸出顯示了可以在集合上使用的所有方法。我將在本文中進(jìn)一步說(shuō)明其中的一些。
查找集合的長(zhǎng)度
要在Python中查找集合的長(zhǎng)度,可以使用len()函數(shù)。此函數(shù)將集合的名稱(chēng)作為參數(shù),并返回一個(gè)整數(shù)值,該整數(shù)值等于集合中存在的元素?cái)?shù)。
例子:
My_Set={1,'s',7.8} len(My_Set)
輸出3
如您在上面的輸出中看到的,已返回3,該數(shù)目等于My_Set中存在的元素?cái)?shù)?,F(xiàn)在,也可以訪(fǎng)問(wèn)這些元素,如下所示。
訪(fǎng)問(wèn)集合的元素
不能使用索引號(hào)訪(fǎng)問(wèn)Set元素,因?yàn)槿缜八?,不索引集合中的元素。因此,?dāng)您要訪(fǎng)問(wèn)集合的元素時(shí),可以遍歷它并訪(fǎng)問(wèn)其元素。
例子:
My_Set={1,'s',7.8} for x in My_Set: print(x)
輸出:
? 1 7.8
如您在輸出中看到的,順序與提供給集合的元素的順序不同。這是因?yàn)樵匚磁判颉?/p>
將元素添加到集合中:
可以使用兩個(gè)函數(shù)add()和update()函數(shù)將元素添加到集合中。
add()函數(shù)將一個(gè)元素添加到現(xiàn)有集合中,如下所示:
例子:
My_Set={1,'s',7.8} My_Set.add(3) My_Set
輸出:?{1,3,7.8,'s'}
如果要向現(xiàn)有集合添加多個(gè)元素,則使用update()函數(shù)。
例子:
My_Set={1,'s',7.8} My_Set.update([2,4.6,1,'r']) My_Set
輸出:??{1、2、4.6、7.8,'r','s'}
從上面的輸出中可以看到,update()函數(shù)獲取4個(gè)值的列表,除1外的所有值都添加到My_Set中。這是因?yàn)榧现幸呀?jīng)存在1,因此無(wú)法再次添加。
刪除一組元素
要從集合中刪除元素,可以使用remove(),?discard()和pop()函數(shù)。
remove()函數(shù)采用一個(gè)參數(shù),該參數(shù)是要從集合中刪除的項(xiàng)目。
例子:
My_Set={1, 2, 4.6, 7.8, 'r', 's'} My_Set.remove(2) print(My_Set)
輸出:?{1,4.6,7.8,'r','s'}
如您所見(jiàn),已經(jīng)使用remove()函數(shù)從集合中刪除了2個(gè)。如果您指定某個(gè)元素作為set中不存在的remove()參數(shù),它將引發(fā)錯(cuò)誤。
現(xiàn)在,如果要從集合中刪除某些元素,并且不確定該元素是否確實(shí)存在于集合中,則可以使用discard()函數(shù)。該函數(shù)將要從集合中刪除的元素作為參數(shù),但是如果該元素不存在,則不會(huì)引發(fā)錯(cuò)誤。
例子:
My_Set={1, 2, 4.6, 7.8, 'r', 's'} My_Set.discard(4.6) My_Set.discard('i') print(My_Set)
輸出:?{1,2,7.8,'r','s'}
上面的輸出顯示從My_Set中刪除了4.6,但是當(dāng)我使用My_Set.discard('i')時(shí),即使我的集合中不存在“ i”,discard()也不會(huì)引發(fā)錯(cuò)誤。
pop()函數(shù)還刪除集合元素,但是由于集合是無(wú)序的,因此您將不知道哪個(gè)元素已被刪除。
例子:
My_Set={1, 2, 4.6, 7.8, 'r', 's'} My_Set.pop() print(My_Set)
輸出:?{2,4.6,7.8,'r','s'}
輸出顯示,使用pop()刪除了一些隨機(jī)元素,在本例中為1。
現(xiàn)在,如果要?jiǎng)h除集合中存在的所有元素,可以使用clear()方法。
例子:
My_Set={1, 2, 4.6, 7.8, 'r', 's'} My_Set.clear() print(My_Set)
輸出:?set()
如您在上面的輸出中看到的,My_Set是一個(gè)空集。
如果要完全刪除該集合,可以使用del關(guān)鍵字。
例子:
My_Set={1, 2, 4.6, 7.8, 'r', 's'} del My_Set print(My_Set)
當(dāng)您運(yùn)行上面的代碼時(shí),它將被拋出錯(cuò)誤,因?yàn)镸y_Set被刪除了。
您還可以對(duì)集合執(zhí)行各種數(shù)學(xué)運(yùn)算,例如并集,交集,差等,這將在下面討論。
Union of Sets
集的并集是指通過(guò)將兩個(gè)或兩個(gè)以上的集合中存在的所有唯一元素相加,將兩個(gè)或更多集合串聯(lián)在一起。這可以通過(guò)兩種方式完成:
使用管道
使用union()函數(shù)
使用管道符號(hào):
可以使用|來(lái)連接兩組。符號(hào)如下:
例子:
a={1, 2, 4.6, 7.8, 'r', 's'} b={2,5,'d','abc'} c=a|b print(a|b)
輸出:?{1,2,4.6,5,7.8,'r','abc','s','d'}
如您所見(jiàn),在上面的輸出中,集合a和集合b的并集存儲(chǔ)在新集合c中。您也可以使用|連接兩個(gè)以上的集合。象征。
例子:
a={1, 2, 4.6, 7.8, 'r', 's'} b={2,5,'d','abc'} c={2,3,4,5} d=a|b|c print(d)
輸出:
{1,2,3,4,4.6,5,7.8,'abc','d','r','s'}
使用union()方法:
要連接兩個(gè)或更多集合,可以使用union()方法,如下所示:
例子:
a={1, 2, 4.6, 7.8, 'r', 's'} b={2,5,'d','abc'} c={'m',23,76,4.7} print("Set a U b = ",a.union(b)) print("Set a U b U c = ",a.union(b,c))
輸出:
設(shè)置U b = {1,2,4.6,5,7.8,'r','abc','s','d'}
設(shè)置一個(gè)U b U c = {1,2,4.6,5,4.7,7.8,'r',76,23,'abc','m','s','d'}
上面的輸出顯示d是集合a,b和c的并集。
集的交集
兩個(gè)或更多集合的交集是一個(gè)新集合,僅由這些集合中存在的公共元素組成。
這可以通過(guò)兩種方式完成:
使用“&”符號(hào)
使用交集()函數(shù)
使用“&”符號(hào):
您可以使用“&”符號(hào)確定兩個(gè)或多個(gè)集合的交集,如下所示:
例子:
a={1, 2,5, 4.6, 7.8, 'r', 's'} b={2,5,'d','abc'} c={2,3,4,} print(a&b) print(a&b&c)
輸出:
{2, 5} {2}
上面的輸出顯示了集合a,b和c的并集。
使用intersection()函數(shù):
您可以使用intersection()函數(shù)確定兩個(gè)或更多集合的交集,如下所示:
例子:
a={1, 2,5, 4.6, 7.8, 'r', 's'} b={2,5,'d','abc'} c={2,3,4} print("Set a intersection b = ",a.intersection(b)) print("Set a intersection b intersection c = ",a.intersection(b,c))
輸出:
設(shè)置交集b = {2,5}
設(shè)置交集b交集c = {2}
上面的輸出顯示了集合a,b和c的交集。
集的區(qū)別:
集合的差異產(chǎn)生了一個(gè)新集合,該集合由僅存在于那些集合之一中的元素組成。這意味著將返回除那些集合的公共元素以外的所有元素。
這可以通過(guò)兩種方式完成:
使用“-”符號(hào)
使用difference()函數(shù)
使用“-”符號(hào):
要使用“-”符號(hào)找出兩組的差異,可以執(zhí)行以下操作:
例子:
a={1, 2,5, 4.6, 7.8, 'r', 's'} b={2,5,'d','abc'} c={2,3,4} print(a-b-c)
輸出:?{1,4.6,7.8,'r','s'}
輸出包含集合'a'的所有元素,但'b'和'c'中存在的那些元素除外。
使用difference()函數(shù):
可以使用內(nèi)置的difference()函數(shù)來(lái)確定集合的差異,如下所示:
例子:
a={1, 2,5, 4.6, 7.8, 'r', 's'} b={2,5,'d','abc'} c={2,3,4} print("Set a - b = ",a.difference(b)) print("Set a - b - c = ",a.difference(b,c))
輸出:
設(shè)置a – b = {1,4.6,7.8,'r','s'}
設(shè)置a – b – c = {1,4.6,7.8,'r','s'}
上面的輸出是使用difference()函數(shù)進(jìn)行差分的結(jié)果。
現(xiàn)在,如果您根本不想更改集合的元素,可以使用凍結(jié)集合,下面將對(duì)此進(jìn)行討論。
What are Frozen Sets?
Python中的凍結(jié)集是無(wú)法修改其值的集。這意味著它是不可變的,這與我之前討論過(guò)的普通集合不同。凍結(jié)集幫助用作字典鍵值對(duì)中的鍵。
How to Create Frozen Sets?
可以使用Frozenset()方法獲得凍結(jié)集。此函數(shù)接受所有可迭代的項(xiàng),并將其轉(zhuǎn)換為不可變的。
例子:
a={1, 2,5, 4.6, 7.8, 'r', 's'} b=frozenset(a) print(b)
輸出:?Frozenset({1、2、4.6、5、7.8,'r','s'})
上面的輸出由集合b組成,集合b是集合a的凍結(jié)版本。
Accessing Frozen Set elements
可以通過(guò)循環(huán)訪(fǎng)問(wèn)凍結(jié)集的元素,如下所示:
例子:
b=frozenset([1, 2, 4.6, 5, 7.8, 'r', 's']) for x in b: print(x)
輸出:
1
2
4.6
5
7.8
秒
上面的輸出顯示,使用for循環(huán),凍結(jié)集合b的所有元素都一個(gè)接一個(gè)地返回。
凍結(jié)集是不可變的,因此,您無(wú)法執(zhí)行諸如add(),remove(),update()等操作。
希望您對(duì)本教程中與您共享的所有內(nèi)容一清二楚。這使我們結(jié)束了有關(guān)“ Python中的集合”的文章的結(jié)尾。?確保盡可能多地練習(xí)并恢復(fù)經(jīng)驗(yàn)。
數(shù)據(jù)結(jié)構(gòu) Python
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。