v1.0.0

Python с нуля для ЕГЭ · Множества: оставляем уникальные значения

Урок курсаPython 35 задачБесплатно

Множества: оставляем уникальные значения

Разберём, как множество удаляет повторы и быстро отвечает на вопрос о принадлежности.

Теория

Множество хранит уникальные элементы

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

Порядок элементов не является учебным контрактом множества. Если ответ требуется вывести упорядоченно, множество сначала передают функции sorted.

numbers = [3, 1, 3, 2, 1]unique = set(numbers)print(len(unique))print(2 in unique)

Как исчезают повторы

При создании множества Python рассматривает каждый элемент, но хранит только один экземпляр каждого равного значения. Поэтому длина множества — это число различных значений, а не длина исходной последовательности.

Операции объединения и пересечения работают с принадлежностью. Пересечение оставляет только элементы, присутствующие с обеих сторон.

Разберём на примере
Разберём два набора
Первый набор содержит 1, 2, 3, второй — 2, 3, 4.
  1. Число 1 отсутствует во втором наборе и не входит в пересечение.
  2. Числа 2 и 3 есть в обоих наборах.
  3. Число 4 отсутствует в первом; итоговое пересечение содержит 2 и 3.
Проверьте себя
Что произойдёт с длиной множества, если добавить уже существующее значение?
Она не изменится: множество хранит один экземпляр каждого значения.

Нельзя обещать порядок обхода

Наблюдаемый в одном запуске порядок множества не следует использовать как часть решения. Представление может отличаться, а смысл структуры от этого не меняется.

Как выбрать множество

Используйте множество, когда порядок и повторы не несут смысла, зато важны уникальность или принадлежность. Если нужны позиции или повторяющиеся элементы, сохраните список.

Как действовать
Проверяем задачу на уникальность
  1. Назовите требуемый результат. Нужен порядок, количество повторов или только разные значения?
  2. Постройте множество. Удалите повторы только если это соответствует задаче.
  3. Выполните операцию. Проверьте принадлежность, пересечение или число элементов.
  4. Упорядочьте вывод при необходимости. Используйте sorted явно, а не полагайтесь на обход.

Практика

Посчитайте уникальные значения

Чему равна длина set([1, 1, 2, 3, 3])?

Подсказка
Повторяющиеся значения в множестве остаются в одном экземпляре.
Решение

Множество содержит 1, 2 и 3. Уникальных значений три.

Проверьте принадлежность

Что вернёт выражение 4 in {2, 4, 6}?

Подсказка
Число 4 явно входит в множество.
Решение

Проверка принадлежности истинна, поэтому результат — `True`.

Добавьте новое значение

После numbers = {1} и numbers.add(5) чему равна длина множества?

Подсказка
Добавляется новое, ранее отсутствовавшее значение.
Решение

Множество содержит два разных элемента: 1 и 5.

Не полагайтесь на порядок

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

Подсказка
Множество предназначено для уникальности и принадлежности, а не для фиксированного порядка.
Решение

Нет. Если порядок важен, значения нужно явно упорядочить, например функцией `sorted`.

Какие числа содержит {1, 2, 3} & {2, 3, 4}? Запишите по возрастанию через пробел.

Подсказка
Пересечение оставляет элементы, которые есть в обоих множествах.
Решение

В обоих множествах присутствуют 2 и 3. Остальные значения встречаются только в одном.

Итог

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

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

Прогресс

0 / 5
x

Вы ещё не решали задания