继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python 的内置函数 frozenset

2882716
关注TA
已关注
手记 70
粉丝 0
获赞 0

Python 的内置函数 frozenset 用于创建一个不可变的集合对象。与普通的 set 不同,frozenset 是不可变的(immutable),这意味着一旦创建就不能修改其内容(不能添加、删除或更改元素)。这种特性使得 frozenset 可以作为字典的键或另一个集合的元素,而普通的 set 则不能。

语法

frozenset([iterable])
  • iterable(可选):一个可迭代对象(如列表、元组、字符串等),用于初始化 frozenset。如果未提供,则返回一个空的 frozenset

特性

  1. 不可变性frozenset 创建后不能被修改,没有 add()remove() 等方法。
  2. 哈希性:由于不可变,frozenset 是可哈希的(hashable),可以作为字典的键或另一个集合的元素。
  3. 支持集合操作frozenset 支持常见的集合操作,如并集(|)、交集(&)、差集(-)、对称差集(^)等,但返回的结果仍然是 frozenset

示例

创建 frozenset

# 从列表创建
fs1 = frozenset([1, 2, 3, 4])
print(fs1)  # 输出: frozenset({1, 2, 3, 4})

# 从字符串创建
fs2 = frozenset("hello")
print(fs2)  # 输出: frozenset({'h', 'e', 'l', 'o'})

# 空 frozenset
fs3 = frozenset()
print(fs3)  # 输出: frozenset()

作为字典的键

# 使用 frozenset 作为字典的键
dict_example = {
    frozenset([1, 2, 3]): "value1",
    frozenset(["a", "b"]): "value2"
}
print(dict_example)  # 输出: {frozenset({1, 2, 3}): 'value1', frozenset({'a', 'b'}): 'value2'}

集合操作

fs_a = frozenset([1, 2, 3])
fs_b = frozenset([3, 4, 5])

# 并集
print(fs_a | fs_b)  # 输出: frozenset({1, 2, 3, 4, 5})

# 交集
print(fs_a & fs_b)  # 输出: frozenset({3})

# 差集
print(fs_a - fs_b)  # 输出: frozenset({1, 2})

# 对称差集
print(fs_a ^ fs_b)  # 输出: frozenset({1, 2, 4, 5})

应用场景

  1. 字典键或集合元素:当需要将集合作为字典的键或另一个集合的元素时,必须使用 frozenset
  2. 不可变数据:在需要确保集合内容不被意外修改的场景下使用。
  3. 性能优化:由于 frozenset 是不可变的,某些操作可能比可变集合更高效。

注意事项

  • frozensetset 一样,只能包含可哈希的元素(如数字、字符串、元组等)。
  • 由于不可变性,frozenset 没有 add()remove()discard() 等方法。

通过 frozenset,Python 提供了一种安全、高效的方式处理不可变集合需求。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP