赞
踩
frozenset 是 set 的不可变版本,因此 set 集合中所有能改变集合本身的方法(如 add、remove、discard、xxx_update 等),frozenset 都不支持;set 集合中不改变集合本身的方法,fronzenset 都支持。
在交互式解释器中输入 dir(frozenset) 命令来查看 frozenset 集合的全部方法,可以看到如下输出结果:
- >>> dir(frozenset)
- ['copy', 'difference', 'intersection', 'isdisjoint', 'issubset', 'issuperset', 'symmetric_difference', 'union']
很明显,frozenset 的这些方法和 set 集合同名方法的功能完全相同。
frozenset 的作用主要有两点:
如下程序示范了在 set 中添加 frozenset:
- s = set()
- #创建 frozenset 不可变集合,使用 frozenset() 函数
- frozen_s = frozenset('Kotlin')
- # 为set集合添加frozenset
- s.add(frozen_s)
- print('s集合的元素:', s)
- sub_s = {'Python'}
- # 为set集合添加普通set集合,程序报错
- s.add(sub_s)
上面程序中第 4 行代码为 set 添加 frozenset,程序完全没有问题,这样 set 中就包括一个 frozenset 子集合;第 8 行代码试图向 set 中添加普通 set,程序会报出 TypeError 异常。运行上面代码,可以看到如下输出结果:
- s集合的元素: {frozenset({'t', 'o', 'i', 'K', 'l', 'n'})}
- Traceback (most recent call last):
- File "C:\Users\mengma\Desktop\1.py", line 8, in <module>
- s.add(sub_s)
- TypeError: unhashable type: 'set'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。