set(可變集合)與frozenset(不可變集合)的區別:
set無序排序且不重復,是可變的,有add(),remove()等方法。既然是可變的,所以它不存在哈希值。基本功能包括關系測試和消除重復元素. 集合對象還支持union(聯合), intersection(交集), difference(差集)和sysmmetric difference(對稱差集)等數學運算.
sets 支持 x in set, len(set),和 for x in set。作為一個無序的集合,sets不記錄元素位置或者插入點。因此,sets不支持 indexing, 或其它類序列的操作。
frozenset是凍結的集合,它是不可變的,存在哈希值,好處是它可以作為字典的key,也可以作為其它集合的元素。缺點是一旦創建便不能更改,沒有add,remove方法。
一、集合的創建
set()和 frozenset()工廠函數分別用來生成可變和不可變的集合。如果不提供任何參數,默認
會生成空集合。如果提供一個參數,則該參數必須是可迭代的,即,一個序列,或迭代器,或支持
迭代的一個對象,例如:一個列表或一個字典。
1 >>> s=set('cheeseshop') 使用工廠方法創建 2 >>> s 3 {'h', 'c', 'o', 's', 'e', 'p'} 4 >>> type(s) 5 <type 'set'> 6 7 >>> s={'chessseshop','bookshop'}直接創建,類似於list的[]和dict的{},不同於dict的是其中的值,set會將其中的元素轉換為元組 8 >>> s 9 {'bookshop', 'chessseshop'} 10 >>> type(s) 11 <type 'set'> 12 13 不可變集合創建: 14 >>> t=frozenset('bookshop') 15 >>> t 16 frozenset({'h', 'o', 's', 'b', 'p', 'k'})

