Меня интересует значение истинности наборов 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?