zoukankan      html  css  js  c++  java
  • python中set和frozenset方法和区别

     

    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'})
  • 相关阅读:
    七七四十九劫,九九八十一难
    Android中用layer-list编写阴影效果
    Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
    Effective C++ 24,25
    windows系统port监听
    线程同步辅助类——Exchanger
    C/C++中constkeyword
    【COCOS2DX-游戏开发之三三】TMX边界控制与小窗体内预览TMX
    IDFA的值什么时候会发生改变
    hadoop(六)
  • 原文地址:https://www.cnblogs.com/bonelee/p/7867441.html
Copyright © 2011-2022 走看看