在Python中,将空集添加到一个frozenset的集合家族中。

3
假设我生成了一个不可变集合,其中包含:
A = frozenset(frozenset([element]) for element in [1,2,3])

我有一个空集

E = frozenset(frozenset())

现在我想要两个集合的并集:
U = A | E

这让我感到
frozenset({frozenset({2}), frozenset({3}), frozenset({1})})

这里假设一个包含空frozenset的frozenset本身也是空的。然而,我希望有这样一个情况:
frozenset({frozenset({}), frozenset({2}), frozenset({3}), frozenset({1})})

因此,我希望明确地将空集添加到集合中。例如,在构建幂集时,我认为这是必要的?

那么:一个仅包含空集本身的集合族是否为空?在Python中,是否有一种使用变量类型setfrozenset显式地将空集包含在集合族中的方法?

1个回答

6

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

>>> frozenset(frozenset())
frozenset()

那是因为传给 fronenset() 的参数是一个包含要添加的值的 可迭代对象。由于 frozenset() 是一个空的可迭代对象,所以没有任何内容被添加。
如果您预期 E 应该是一个只有一个元素的集合,则需要传入一个只包含一个元素的可迭代对象;可以使用 {...} 集合表示法、一个单一元素的元组 (...,) 或者一个列表 [...]
>>> frozenset({frozenset()})  # pass in a set() with one element.
frozenset({frozenset()})

现在您已获得期望的输出:

>>> A = frozenset(frozenset([element]) for element in [1,2,3])
>>> E = frozenset({frozenset()})
>>> A | E
frozenset({frozenset({3}), frozenset({2}), frozenset({1}), frozenset()})

很好,问题解决了。谢谢!我会在可以的时候接受它 :D - Johannes Bleher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接