美文网首页
py3笔记20:frozenset

py3笔记20:frozenset

作者: _百草_ | 来源:发表于2022-08-14 17:37 被阅读0次

1. 基础

frozenset(可迭代对象) # 表示frozenset

  • set VS frozenset
    """
    set 集合,可变序列,程序可以更改序列的元素
    remove()、discard()、add()等支持
    frozenset 集合,不可变序列,程序不能改变序列的元素
    remove()、discard()、add()等不支持
    支持set不改变集合本身的方法
    """
print(dir(frozenset))
# [ 'copy', 'difference', 'intersection', 
# 'isdisjoint', 'issubset', 'issuperset', 'symmetric_difference', 'union']

2. 使用场景

"""
1、集合元素不需要改变时,使用frozenset代替set,更安全
2、要求必须时不可变对象时
"""

s = {"Python","java","C"}
fs = frozenset(s)  # frozenset({'java', 'C', 'Python'})

# fs添加元素
fs.add("C++") # AttributeError: 'frozenset' object has no attribute 'add'

# s添加元素
s.add("C++")
print(s)  # {'java', 'C++', 'Python', 'C'}

set元素添加set
s.add(s)  # TypeError: unhashable type: 'set'

因set元素需要时不可改变类型,而set类型本身是可变类型,所以set中添加报错
对于内建类型来说,unhashable(不可哈希)的是可变动类型,如list、set、dict;


3. 参考

  1. Python frozenset集合(set集合的不可变版本)
  2. 可哈希(hashable)与不可哈希(unhashable)

相关文章

网友评论

      本文标题:py3笔记20:frozenset

      本文链接:https://www.haomeiwen.com/subject/qrjhgrtx.html