python set和frozenset 異同點學習記錄
阿新 • • 發佈:2018-12-08
今天接觸到set和frozenset的同時使用,之前對於二者的瞭解僅僅是停留在set是可變集合,frozenset是不可變集合,其他的也就沒有再記住什麼了,今天找時間簡單地來總結一下它們的異同點,也方便以後的學習和使用,下面是具體的實踐,具體的區別講解都在註釋中,就不再多解釋了:
#!usr/bin/env python #encoding:utf-8 from __future__ import division ''' __Author__:沂水寒城 功能:python set和frozenset 異同點學習記錄 ''' ''' 相同點: 都是集合 都擁有集合物件共有的操作,如union、intersection、difference和sysmmetric difference 不同點: set是可變集合,frozenset是不可變集合 set中的元素可以修改,frozenset中的元素一旦建立完成獎就不能再進行增刪操作 set無hash值不可做字典中的鍵,因為它元素可變,frozenset有hash值,元素不可變古可用作字典中的鍵 ''' #工廠方法初始化建立兩個集合 set_=set('hangzhou') print 'set_: ',set_ print 'type set_: ',type(set_) frozenset_=frozenset('hangzhou') print 'frozenset_: ',frozenset_ print 'type frozenset_: ',type(frozenset_) #向集合中增加元素 try: tmp_list=['A','B','C','D'] for one_item in tmp_list: set_.add(one_item) print 'set_: ',set_ print 'type set_: ',type(set_) for one_item in tmp_list: frozenset_.add(one_item) print 'frozenset_: ',frozenset_ print 'type frozenset_: ',type(frozenset_) except Exception,e: print 'Add Exception: ',e #從集合中移除指定元素 try: tmp_list=['B','D'] for one_item in tmp_list: set_.remove(one_item) print 'set_: ',set_ print 'type set_: ',type(set_) for one_item in tmp_list: frozenset_.remove(one_item) print 'frozenset_: ',frozenset_ print 'type frozenset_: ',type(frozenset_) except Exception,e: print 'Remove Exception: ',e #並交差集合計算 print 'union: ',set_|frozenset_ print 'intersection: ',set_&frozenset_ print 'difference: ',set_-frozenset_ print 'sysmmetric difference: ',set_^frozenset_
結果如下:
set_: set(['a', 'g', 'h', 'o', 'n', 'u', 'z']) type set_: <type 'set'> frozenset_: frozenset(['a', 'g', 'h', 'o', 'n', 'u', 'z']) type frozenset_: <type 'frozenset'> set_: set(['a', 'A', 'C', 'B', 'D', 'g', 'h', 'o', 'n', 'u', 'z']) type set_: <type 'set'> Add Exception: 'frozenset' object has no attribute 'add' set_: set(['a', 'A', 'C', 'g', 'h', 'o', 'n', 'u', 'z']) type set_: <type 'set'> Remove Exception: 'frozenset' object has no attribute 'remove' union: set(['a', 'A', 'C', 'g', 'h', 'o', 'n', 'u', 'z']) intersection: set(['a', 'g', 'h', 'o', 'n', 'u', 'z']) difference: set(['A', 'C']) sysmmetric difference: set(['A', 'C'])
今天就簡單學習到這裡了,感覺很多細節的知識還是必須要去花點實踐學習和掌握的。