国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > Python集合類型

Python集合類型

來源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-11-07 15:18:22 1699341502

python目前有兩種內(nèi)置集合類型,set和frozenset。

Ⅰ、兩者區(qū)別

set是可變的,沒有哈希值,其內(nèi)容可以使用add()和remove()這樣的方法來改變,所以不能被用作字典的鍵或其他集合的元素。

frozenset是不可變的,并且為hashable,其內(nèi)容在被創(chuàng)建后不能再改變,因此可以被用作字典的鍵或其他集合的元素。

Ⅱ、創(chuàng)建集合

兩個(gè)類的構(gòu)造器有著相同的作用方式:

classset([iterable])

classfrozenset([iterable])

返回一個(gè)新的set或frozenset對(duì)象,其元素來自于iterable。集合的元素必須為hashable。要表示由集合對(duì)象構(gòu)成的集合,所有的內(nèi)層集合必須為frozenset對(duì)象。如果未指定iterable,則將返回一個(gè)新的空集合。

除了可以使用set構(gòu)造器,非空的set(不是frozenset)還可以通過將以逗號(hào)分隔的元素列表包含于花括號(hào)之內(nèi)來創(chuàng)建,例如:

>>>a={'hello','python'}

>>>type(a)

當(dāng)然如果想要建立一個(gè)空的集合,則必須用set構(gòu)造器。

Ⅲ、無序多項(xiàng)集set

set對(duì)象是由具有唯一性的hashable對(duì)象所組成的無序多項(xiàng)集。常見的用途包括成員檢測(cè)、從序列中去除重復(fù)項(xiàng)以及數(shù)學(xué)中的集合運(yùn)算,例如交集、并集、差集與對(duì)稱差集等等。

與其他多項(xiàng)集一樣,集合也支持xinset,len(set)和forxinset。作為一種無序的多項(xiàng)集,集合并不記錄元素位置和插入順序。相應(yīng)地,集合不支持索引、切片或其他序列類的操作。

Ⅳ、集合操作

set和frozenset的實(shí)例提供一下操作:

len(s)#返回集合s中的元素?cái)?shù)量

xins#檢測(cè)x是否為s中的成員

xnotins#檢測(cè)x是否非s中的成員

isdisjoint(other)#如果集合中沒有與other共有的元素則返回True

issubset(other)#等同于set<=other,檢測(cè)集合是否為other子集

set

issuperset(other)#等同于set>=other,檢測(cè)集合是否為other超集

set>other#檢測(cè)集合是否為other真超集

#下面四種方法返回一個(gè)新集合

union(*others)#等同于set|other|...,并集

intersection(*others)#等同于set&other&...,交集

difference(*others)#等同于set-other-...,差集

symmetric_difference(other)#等同于set^other,補(bǔ)集

copy()#返回原集合的淺拷貝

set的實(shí)例與frozenset的實(shí)例之間基于它們的成員進(jìn)行比較。例如set('abc')==frozenset('abc')返回True,set('abc')inset([frozenset('abc')])也一樣。

可用于set而不能用于不可變的frozenset實(shí)例的操作:

#下面四種方法更新集合

update(*others)#等同于set|=other|...

intersection_update(*others)#等同于set&=other&...

difference_update(*others)#set-=other|...

symmetric_difference_update(other)#set^=other

add(elem)#添加elem元素到集合中

remove(elem)#從集合中移除元素elem

discard(elem)#如果元素elem存在集合中則將其移除

pop()#從集合中移除并返回任意一個(gè)元素

clear()#移除集合中所有元素

Note:issubset(),issuperset(),union(),intersection(),difference(),symmetric_difference(),update(),intersection_update(),difference_update()和symmetric_difference_update()方法會(huì)接受任意可迭代對(duì)象作為參數(shù)。

set('abc')&'cbs'#錯(cuò)誤

set('abc').intersection('cbs')#正確

相比之下,它們所對(duì)應(yīng)的運(yùn)算符版本則要求其參數(shù)為集合。這就排除了容易出錯(cuò)的構(gòu)造形式例如set('abc')&'cbs',而推薦可讀性更強(qiáng)的set('abc').intersection('cbs')。

以上內(nèi)容為大家介紹了Python集合類型,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
python豐富的內(nèi)置類型及相關(guān)操作

python的內(nèi)置類型如下:lString:字符串放在單引號(hào)、雙引號(hào)、三引號(hào)(多行時(shí))中,從0開始索引,支持n查:find、index、n切片:s[0:2]、s[1:]n連...詳情>>

2023-11-07 18:07:35
Python裝飾器?的寫法以及應(yīng)用場景

含義:裝飾器本質(zhì)就是函數(shù),為其他函數(shù)添加附加功能原則:不修改被修飾函數(shù)的代碼不修改被修飾函數(shù)的調(diào)用方式應(yīng)用場景:無參裝飾器在用戶登錄認(rèn)...詳情>>

2023-11-07 17:38:46
Python粘包

什么是粘包?socket中造成粘包的原因是什什么?哪些情況會(huì)發(fā)生粘包現(xiàn)象?只有TCP有粘包現(xiàn)象,UDP永遠(yuǎn)不會(huì)粘包粘包:在獲取數(shù)據(jù)時(shí),出現(xiàn)數(shù)據(jù)的內(nèi)容不...詳情>>

2023-11-07 17:35:10
Python之select、poll、epoll模型的區(qū)別

select、poll、epoll模型的區(qū)別?(屬于多路復(fù)用IO的模型)都是i/o多路復(fù)用的機(jī)制,監(jiān)視多個(gè)socket是否發(fā)生變化,本質(zhì)上都是同步i/oselect,poll實(shí)...詳情>>

2023-11-07 17:31:34
Python進(jìn)程、線程、協(xié)程的區(qū)別

簡述進(jìn)程、線程、協(xié)程的區(qū)別以及應(yīng)用場景?線程是指進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,#進(jìn)程進(jìn)程擁有自己獨(dú)立的堆和棧,既不共享堆,亦不共享?xiàng)#M(jìn)程由操作...詳情>>

2023-11-07 17:27:58