ЯдроКодаподготовка к экзаменам
Учебная платформа

Загружаем материалы

Подготавливаем материалы и навигацию по разделу.

Уникальность и принадлежность: когда задаче нужно множество

Автор: · Обновлено

Множество хранит только уникальные элементы. Если одно и то же значение добавить несколько раз, оно останется в множестве один раз. Это удобно для задач на разные числа, уникальные слова, пересечение списков и проверку повторов.

В Python множество создают с помощью set.

numbers = [5, 3, 5, 8, 3, 10]
unique_numbers = set(numbers)

print(len(unique_numbers))

Программа выводит количество различных чисел. Такой прием часто встречается в школьных задачах: не “сколько всего элементов”, а “сколько разных элементов”.

Проверка повторов

Множество удобно использовать во время перебора. Например, нужно понять, встречалось ли число раньше.

numbers = [4, 7, 2, 7, 9]
seen = set()
has_duplicate = False

for number in numbers:
    if number in seen:
        has_duplicate = True
        break

    seen.add(number)

print('есть повтор' if has_duplicate else 'повторов нет')

Проверка number in seen обычно работает быстрее, чем поиск в списке.

Операции над множествами

Для школьной информатики полезны три операции:

math_club = {'Аня', 'Илья', 'Маша'}
programming_club = {'Илья', 'Олег', 'Маша'}

print(math_club & programming_club)
print(math_club | programming_club)
print(math_club - programming_club)

Множества особенно полезны в задачах, где нужно убрать повторы и быстро проверять принадлежность. Они не заменяют списки полностью: если важен порядок, список остается основным инструментом.

Практикум: пересечение участников кружков

Есть списки участников кружков робототехники и математики, причём внутри встречаются повторы. Постройте множество каждого кружка и найдите тех, кто посещает оба, только один и хотя бы один. Выведите результаты в стабильном порядке через сортировку. Проверьте пустой кружок, одинаковые списки и имя, повторённое несколько раз. Сравните длину исходного списка с размером множества и объясните разницу. Если важен порядок записи, сохраните отдельный список: множество само по себе не моделирует очередь.

Контрольная точка

Как изменится ответ после повторного добавления существующего имени? Назовите задачи, где это свойство полезно, и случай — например число посещений, — где потеря повторов сделает модель неверной.

Частые вопросы

Может ли множество заменить список?

Только если важны уникальность и проверка принадлежности, а порядок и число повторений не несут смысла. Для расписания, очереди или истории действий нужен список либо сочетание нескольких структур.

Источники