Добавьте пустой набор к семейству наборов в морозилке в python

Предположим, я создаю фрозенсет с

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({2}), frozenset({3}), frozenset({1})})

Итак, я хотел бы добавить пустой набор явно в набор. Это, например, необходимо, на мой взгляд, при построении силового агрегата?

Итак: семейство наборов, которое содержит только пустое множество, пусто? Есть ли способ в Python явно включить пустой набор в семейство наборов, используя типы переменных set а также frozenset?

1 ответ

Решение

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()})
Другие вопросы по тегам