将空集添加到 python 中的frozenset 中的一个集合中

Joh*_*her 3 python set frozenset

假设我生成了一个frozenset

A = frozenset(frozenset([element]) for element in [1,2,3])
Run Code Online (Sandbox Code Playgroud)

我有空集

E = frozenset(frozenset())
Run Code Online (Sandbox Code Playgroud)

现在我想要两个集合的并集:

U = A | E
Run Code Online (Sandbox Code Playgroud)

这给了我

frozenset({frozenset({2}), frozenset({3}), frozenset({1})})
Run Code Online (Sandbox Code Playgroud)

这假设,包含空的frozenset 的frozenset 本身是空的。但是,我想拥有

frozenset({frozenset({}), frozenset({2}), frozenset({3}), frozenset({1})})
Run Code Online (Sandbox Code Playgroud)

所以,我想将空集显式添加到集合中。例如,在我看来,在构建幂集时这是必要的吗?

那么:一个只包含空集本身的集合族是空的吗?在 Python 中,有没有一种方法可以使用变量类型setfrozenset?

Mar*_*ers 6

E 是一个空集,没有元素:

>>> frozenset(frozenset())
frozenset()
Run Code Online (Sandbox Code Playgroud)

那是因为 to 的参数fronenset()要添加的值迭代frozenset()是一个空的可迭代对象,因此没有添加任何内容。

如果你期望E是一个包含一个元素的集合,你需要传入一个包含一个元素的迭代器;使用{...}集合表示法,或单个元素元组(...,),或列表[...]

>>> frozenset({frozenset()})  # pass in a set() with one element.
frozenset({frozenset()})
Run Code Online (Sandbox Code Playgroud)

现在你得到了预期的输出:

>>> A = frozenset(frozenset([element]) for element in [1,2,3])
>>> E = frozenset({frozenset()})
>>> A | E
frozenset({frozenset({3}), frozenset({2}), frozenset({1}), frozenset()})
Run Code Online (Sandbox Code Playgroud)