Добавьте пустой набор к семейству наборов в морозильнике в python - PullRequest
0 голосов
/ 17 мая 2018

Предположим, я сгенерировал Frozenset с

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 Ответ

0 голосов
/ 17 мая 2018

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()})
...