Вопрос:
Почему set не является последовательностью, хоть он и хранить несколько значений?
Как часто спрашивают: Очень редко
Кто предложил: ALittleMoron
Ответ:
set является коллекцией, потому что он может хранить несколько элементов внутри себя, но этого недостаточно чтобы он считался последовательность.
Последовательность предполагает, что у каждого элемента есть определённая позиция: первый, второй, третий и так далее. Поэтому последовательности поддерживают обращение по индексу и обычно срезы:
items = ["a", "b", "c"]
items[0] # "a"
items[1:] # ["b", "c"]
В set позиция элемента не является частью структуры данных:
items = {"a", "b", "c"}
items[0] # TypeError
set предназначен для других задач:
- хранения только уникальных элементов;
- быстрой проверки принадлежности через
in; - выполнения операций над множествами: объединения, пересечения и разности.
Объяснение ответа на собеседовании:
Данный вопрос задается, потому что интервьюер проверяет:
- понимает ли кандидат разницу между коллекцией и последовательностью;
- знает ли основные свойства set;
- понимает ли, что количество элементов не определяет тип структуры данных;
- может ли кандидат выбрать структуру данных исходя из требуемых операций;
- знает ли роль хеширования в работе множества.
В целом даже если вы не ответите на вопрос на столько точно, интервьюер скорее всего задаст уточняющие вопросы, которые и выведут на пункты выше.
Внешние ресурсы:
- Официальная документация Python
Любые вещи в языке лучше начинать учить с его официальной документации. Она может быть неудобной, но это первоисточник, а следовательно меньше шансов получить ложную информацию по интересующей вас теме. А официальная документация Python ещё и хорошо написана, и хорошо объясняет типы данных.