Меня интересует значение истинности наборов Python, таких как {'a', 'b'}
, или пустой набор set()
(который не совпадает с пустым словарем {}
). В частности, я хотел бы знать, является ли bool(my_set)
False
тогда и только тогда, когда набор my_set
пуст.
Игнорируя примитив (например, цифры), а также пользовательские типы, https://docs.python.org/3/library/stdtypes.html#truth говорит:
Следующие значения считаются ложными:
- [...]
- любая пустая последовательность, например
''
,()
,[]
.- любое пустое отображение, например
{}
.- [...]
Все остальные значения считаются истинными
Согласно https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range, набор не является последовательностью (он неупорядочен, его элементы не имеют индексов и т.д.):
Существует три основных типа последовательности: списки, кортежи и объекты диапазона.
И, согласно https://docs.python.org/3/library/stdtypes.html#mapping-types-dict,
В настоящее время существует только один стандартный тип сопоставления, словарь.
Итак, насколько я понимаю, тип набора не является типом, который может быть False
. Однако, когда я пытаюсь, bool(set())
оценивается как False
.
Вопросы:
- Является ли это проблемой документации или я что-то не так понял?
- Является ли пустым множеством единственное множество, значение истинности которого
False
?