Добавьте пустой набор к семейству наборов в морозилке в 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()})