python第七关再来一盘_7、 Python系列,七,的,集合
集合
1、什么是集合
我們可以把集合看作是沒有存儲value的字典,也就是說可以把集合看作是只有key的字典。
我們知道字典中的key它必須是不可變的類型,因為我們要根據key調用哈希函數hash()來計算出哈希碼,也就是說key-value對的存儲位置,為了保證每次存取的這個key-value對呢它是固定的,所以key要求是不可變的類型。所以集合中的數據可以是任何不可變的類型。
我們還是根據集合的示意圖來把這些特點再來回顧一下:
這個示意圖其實就是把字典的那個示意圖中的value給去掉了,只保留了key,然后這個key呢其實就是集合保存的數據,也就是我把key也換成了數據,這樣呢在計算存儲位置的時候,也就是計算哈希碼的時候,傳入給hash函數的這個參數就是集合中保存的這個數據。
2、集合的創建
3、集合間的關系
因為集合中的元素是無序的,所以順序不重要。
dis表示沒有的意思,joint就是交集、連接的意思,所以disjoint就是沒有交集。
4、集合的數學操作
差集,它指的是包含在集合a中,但是不包含在集合b中的那部分元素。
對稱差集,它指的是a、b兩個集合的并集,再除去a、b兩個集合的交集,就是兩個集合的對稱差集。
接下來我們就來學習下,如何在Python程序中集合的這4種數學操作。
5、集合的查操作
6、集合的增操作
大家注意,因為集合中不存在重復的數據,所以呢集合中已經存在的元素就不會再次被添加到集合中。
因為集合中的元素具有唯一性,也就是說集合中不能存在重復的元素,所以不管你使用上面這兩種方式中的哪一種,集合中已經存在的元素都不會被再次添加到集合中。
7、集合的刪操作
我調用方法pop的時候并沒有指定參數,因為集合中的元素和字典是類似的,都是沒有順序的,所以我們無法指定我們要刪除的那個元素,只能是不傳入參數,這樣就會刪除任意一個元素。
調用clear方法,清空集合中的所有元素,再來打印s的話,它就是一個空集合了。
8、不可變集合frozenset
frozen,被凍結的,顧名思義,frozenset的意思是,被凍結的集合,也就是不可變的集合。
frozenset之于set呢就好比是tuple之于list,在前面的課程中我們已經學習了,tuple是不可變的,而list是可變的,這是list和tuple的一個最主要的區別。
同樣,set是可變的,而frozenset是不可變的,這也是set與frozenset的最主要的一個區別。
前面的課程中我們已經講過了,只有不可變類型的對象才存在哈希值。
字典的key只能是不可變類型的對象。
frozenset可以作為set中的元素,因為我們說集合中的元素呢就相當于是把字典中的key-value對中的value去除掉。
如果我不傳入任何參數的話,這樣就創建了一個空frozenset對象,也就是說這個frozenset中呢不包含任何的元素。
與set對象的創建是類似的,我們在調用這個內置函數frozenset的時候,傳入的這個參數可以是多種類型的。
前面的課程中,我們有講到過,我們在程序中要盡量的使用不可變類型的對象,因為不可變類型的對象呢是有好處的:
它的第一個好處是,一旦我們創建了一個不可變類型的對象,那么它的所有數據都不能夠被修改了,這樣呢就不會產生由于修改數據而導致的錯誤;
第二個好處是,在多任務環境下,同時操作對象時,不需要加鎖,所以在程序中我們應該盡可能的選擇使用不可變類型的對象。
總結
以上是生活随笔為你收集整理的python第七关再来一盘_7、 Python系列,七,的,集合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql5.7 glibcxx_3.4
- 下一篇: 淘宝 oracle mysql_Orac