python第七关再来一盘_7、 Python系列,七,的,集合
集合
1、什么是集合
我們可以把集合看作是沒(méi)有存儲(chǔ)value的字典,也就是說(shuō)可以把集合看作是只有key的字典。
我們知道字典中的key它必須是不可變的類型,因?yàn)槲覀円鶕?jù)key調(diào)用哈希函數(shù)hash()來(lái)計(jì)算出哈希碼,也就是說(shuō)key-value對(duì)的存儲(chǔ)位置,為了保證每次存取的這個(gè)key-value對(duì)呢它是固定的,所以key要求是不可變的類型。所以集合中的數(shù)據(jù)可以是任何不可變的類型。
我們還是根據(jù)集合的示意圖來(lái)把這些特點(diǎn)再來(lái)回顧一下:
這個(gè)示意圖其實(shí)就是把字典的那個(gè)示意圖中的value給去掉了,只保留了key,然后這個(gè)key呢其實(shí)就是集合保存的數(shù)據(jù),也就是我把key也換成了數(shù)據(jù),這樣呢在計(jì)算存儲(chǔ)位置的時(shí)候,也就是計(jì)算哈希碼的時(shí)候,傳入給hash函數(shù)的這個(gè)參數(shù)就是集合中保存的這個(gè)數(shù)據(jù)。
2、集合的創(chuàng)建
3、集合間的關(guān)系
因?yàn)榧现械脑厥菬o(wú)序的,所以順序不重要。
dis表示沒(méi)有的意思,joint就是交集、連接的意思,所以disjoint就是沒(méi)有交集。
4、集合的數(shù)學(xué)操作
差集,它指的是包含在集合a中,但是不包含在集合b中的那部分元素。
對(duì)稱差集,它指的是a、b兩個(gè)集合的并集,再除去a、b兩個(gè)集合的交集,就是兩個(gè)集合的對(duì)稱差集。
接下來(lái)我們就來(lái)學(xué)習(xí)下,如何在Python程序中集合的這4種數(shù)學(xué)操作。
5、集合的查操作
6、集合的增操作
大家注意,因?yàn)榧现胁淮嬖谥貜?fù)的數(shù)據(jù),所以呢集合中已經(jīng)存在的元素就不會(huì)再次被添加到集合中。
因?yàn)榧现械脑鼐哂形ㄒ恍?#xff0c;也就是說(shuō)集合中不能存在重復(fù)的元素,所以不管你使用上面這兩種方式中的哪一種,集合中已經(jīng)存在的元素都不會(huì)被再次添加到集合中。
7、集合的刪操作
我調(diào)用方法pop的時(shí)候并沒(méi)有指定參數(shù),因?yàn)榧现械脑睾妥值涫穷愃频?#xff0c;都是沒(méi)有順序的,所以我們無(wú)法指定我們要?jiǎng)h除的那個(gè)元素,只能是不傳入?yún)?shù),這樣就會(huì)刪除任意一個(gè)元素。
調(diào)用clear方法,清空集合中的所有元素,再來(lái)打印s的話,它就是一個(gè)空集合了。
8、不可變集合frozenset
frozen,被凍結(jié)的,顧名思義,frozenset的意思是,被凍結(jié)的集合,也就是不可變的集合。
frozenset之于set呢就好比是tuple之于list,在前面的課程中我們已經(jīng)學(xué)習(xí)了,tuple是不可變的,而list是可變的,這是list和tuple的一個(gè)最主要的區(qū)別。
同樣,set是可變的,而frozenset是不可變的,這也是set與frozenset的最主要的一個(gè)區(qū)別。
前面的課程中我們已經(jīng)講過(guò)了,只有不可變類型的對(duì)象才存在哈希值。
字典的key只能是不可變類型的對(duì)象。
frozenset可以作為set中的元素,因?yàn)槲覀冋f(shuō)集合中的元素呢就相當(dāng)于是把字典中的key-value對(duì)中的value去除掉。
如果我不傳入任何參數(shù)的話,這樣就創(chuàng)建了一個(gè)空f(shuō)rozenset對(duì)象,也就是說(shuō)這個(gè)frozenset中呢不包含任何的元素。
與set對(duì)象的創(chuàng)建是類似的,我們?cè)谡{(diào)用這個(gè)內(nèi)置函數(shù)frozenset的時(shí)候,傳入的這個(gè)參數(shù)可以是多種類型的。
前面的課程中,我們有講到過(guò),我們?cè)诔绦蛑幸M量的使用不可變類型的對(duì)象,因?yàn)椴豢勺冾愋偷膶?duì)象呢是有好處的:
它的第一個(gè)好處是,一旦我們創(chuàng)建了一個(gè)不可變類型的對(duì)象,那么它的所有數(shù)據(jù)都不能夠被修改了,這樣呢就不會(huì)產(chǎn)生由于修改數(shù)據(jù)而導(dǎo)致的錯(cuò)誤;
第二個(gè)好處是,在多任務(wù)環(huán)境下,同時(shí)操作對(duì)象時(shí),不需要加鎖,所以在程序中我們應(yīng)該盡可能的選擇使用不可變類型的對(duì)象。
總結(jié)
以上是生活随笔為你收集整理的python第七关再来一盘_7、 Python系列,七,的,集合的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql5.7 glibcxx_3.4
- 下一篇: 淘宝 oracle mysql_Orac