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 >>> t16 frozenset({'h', 'o', 's', 'b', 'p', 'k'})
本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/7867441.html,如需转载请自行联系原作者