КурсыИИМатематикаКодФизикаО проекте и вопросы

TwiddleLab / Код / Структуры данных, которые видно

Множества: а оно там есть?

Урок 5 из 10 · 7 мин · Бесплатно, без аккаунта

Что ты узнаешь

  • Множество хранит каждый элемент один раз, без определённого порядка. Это хеш-таблица с ключами без значений.
  • x in s это один прыжок в шкафчик, а не просмотр: одна скорость для 10 элементов и для 100 миллионов.
  • Пересыпь список в множество, и повторы исчезнут: len(set(names)) считает разные имена.
  • Множества комбинируются: a & b это то, что есть в обоих, a | b это всё, a - b это только в a.

Начать урок

Как идёт урок

  1. Занято ли «shadow_wolf»?

    В игре 100 миллионов имён пользователей. Если проверять по одному, сколько займёт один ответ?

  2. Список или множество: увеличивай число имён.

    Множество хранит имена в хеш-шкафчиках, как в прошлом уроке. Двигай до самого верха.

    Список понятия не имеет, где имя, поэтому отсутствующее имя значит проверку всех. Множество считает хеш имени, открывает один шкафчик и смотрит только туда.

  3. Пересыпь список гостей в множество.

    Некоторые имена набрали дважды. Следи за длиной.

  4. Это множество.

    Множество хранит каждый элемент не больше одного раза, без определённого порядка. Внутри это хеш-таблица с ключами без значений.

    s = set() создаёт его, s.add(x) кладёт x, x in s задаёт вопрос одним прыжком, len(s) считает элементы.

    set(names) превращает список в множество, поэтому len(set(names)) считает разные имена.

  5. Кто на кого подписан?

    Разложи каждое имя по тому, в чьём списке оно есть. Это диаграмма Венна из математики, сделанная множествами.

  6. Составь своё множество игр.

    Выбери пять. Дальше сравнишь его с друзьями.

  7. У кого с тобой больше всего общих игр?

    Нажимай на каждого друга, чтобы увидеть mine & theirs. Оставь выбранным лучшее совпадение, потом «Проверить».

    Пересечение a & b оставляет только элементы из обоих множеств. Для каждой игры в твоём множестве компьютер спрашивает «есть в их?», по прыжку на каждую, поэтому сравнение быстрое даже для огромных множеств.

  8. Побудь охранником.

    Приходят гости. Уже внутри или впустить? Быстро и без ошибок.

  9. Ещё одна работа для множества: помнить, где уже побывали.

    Робот исследует лабиринт. Запусти его без множества, потом с ним.

Предыдущий урок: Хеш-таблицы: как словари находят · Следующий урок: Деревья: папки в папках · Часть курса: Структуры данных, которые видно

Уроки интерактивные и работают на JavaScript. Включи его, чтобы играть.

Loading TwiddleLab