Зарегистрируйтесь, чтобы продолжить обучение

Теория множеств Python: Списки

Теория множеств – крайне важная математическая концепция для любых разработчиков. Данные, с которыми работают программы, часто представляются как множества — значит, к ним применимы правила теории множеств. В первую очередь это касается различных операций над множествами, например, пересечения или объединения.

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

Краткая терминология

Основное понятие теории множеств, как ни удивительно — множество. Множеством обозначают набор объектов произвольной природы, который рассматривается как единое целое. Простейший пример — цифры. Множество всех цифр включает в себя 10 элементов (от 0 до 9).

Но не каждый набор объектов можно назвать множеством. Существует важное условие – все элементы множества должны быть уникальными. Например, числа 1, 1 и 3 не могут называться множеством, а 1, 3, 5 могут.

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

Real Set

Представление множеств кружками довольно удобно. Можно быстро оценить как друг с другом соотносятся разные множества.

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

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

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

На практике представление данных в виде множеств полезно тогда, когда мы хотим что-то сделать с ними. Простой пример. Когда в Фейсбуке вы заходите на страницу другого человека, то Фейсбук показывает вам блок с общими друзьями. Если принять, что ваши друзья и друзья вашего друга — два множества, то общие друзья — множество, полученное как пересечение исходных множеств друзей.

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

В Python нет встроенных методов для работы со списками как с множествами. Поэтому мы используем библиотеку pydash. Ниже примеры показаны на ней.

Пересечение

Пересечением множеств называется множество, в которое входят элементы, встречающиеся во всех данных множествах одновременно.

Пример с общими друзьями:

import pydash.arrays as ar

# Друзья одного человека
friends1 = ['vasya', 'kolya', 'petya']

# Друзья другого человека
friends2 = ['igor', 'petya', 'sergey', 'vasya', 'sasha']

# Общие друзья
common_friends = ar.intersection(friends1, friends2)

print(common_friends)  # ['vasya', 'petya']

Объединение

Объединением множеств называется множество, в которое входят элементы всех данных множеств.

import pydash.arrays as ar

friends1 = ['vasya', 'kolya', 'petya']
friends2 = ['igor', 'petya', 'sergey', 'vasya', 'sasha']

print(ar.union(friends1, friends2)) # => ['vasya', 'kolya', 'petya', 'igor', 'sergey', 'sasha']

Каждый друг в объединении встречается ровно один раз.

Дополнение (разность)

Разностью двух множеств называется множество, в которое входят элементы первого множества, не входящие во второе. В программировании такая операция часто называется diff (разница).

import pydash.arrays as ar

friends1 = ['vasya', 'kolya', 'petya']
friends2 = ['igor', 'petya', 'sergey', 'vasya', 'sasha']

print(ar.difference(friends1, friends2)) # => ['kolya']

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

Проверку принадлежности элемента множеству можно выполнить с помощью встроенного оператора in:

numbers = [4, 13, 21]

print(4 in numbers) # => True
print(2 in numbers) # => False

Выводы

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


Дополнительные материалы

  1. Рассказы о множествах (pdf)

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 26 декабря
профессия
от 24 542 ₸ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 26 декабря

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»