Назад

Вопрос:

Почему 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 ещё и хорошо написана, и хорошо объясняет типы данных.