Сегодня на Old Programmer мы продолжаем серию статей о множествах в языке Python.
Множества в языке программирования Python
Еще раз обратим внимание, что в множествах отсутствует порядок. Их нельзя отсортировать. Интерпретатор не обязан поддерживать тот порядок, который вы задали первоначально. Нужный порядок мы поддерживаем в списках, а множества используем для других целей, о которых мы продолжим рассказывать.
Сегодня говорим об операторах, которые поддерживают основные действия над множествами: объединение, пересечение, разность, симметричная разность.
Но начнем мы с очень важного вопроса. Равенство множеств. Два множества будут равны, если
- Количество элементов множеств совпадают.
- Для каждого элемента первого множества найдется равный ему элемент во втором множестве.
Кстати, количество элементов в множестве можно найти с помощью универсальной глобальной функции len().
И так
ls1 = {1, 2, 3, 4, 5, 6}
ls2 = {2, 1, 3, 4, 5, 6}
print(ls2 == ls1)
Результат выполнения данного фрагмента будет
True
Не забываем, что порядок следования элементов в множестве не важен. Разумеется можно использовать сравнение на неравенство, т.е. != .
Объединение множеств
Результат объединения двух множеств является множество, состоящее из элементов, которые входят либо в первое множество либо во второе либо в оба сразу. При этом, разумеется, будут удалены дубли.
ls1 = {1, 2, 3, 4, 5, 6}
ls2 = {2, 1, 7}
ls3 = ls1 | ls2
print(ls3)
результат выполнения данного фрагмента
{1, 2, 3, 4, 5, 6, 7}
Пересечение множеств
Результатом пересечения двух множеств является множество, элементы которого входят одновременно в оба множества. Не забываем, что в множестве не могут быть одинаковые элементы.
ls1 = {1, 2, 3, 4, 5, 6}
ls2 = {2, 1, 7}
ls3 = ls1 & ls2
print(ls3)
результатом выполнения данного фрагмента будет
{1, 2}
Разность множеств
Разностью двух множеств будет множество, элементы которого входят в первое множество и не входят во второе.
ls1 = {1, 2, 3, 4, 5, 6}
ls2 = {2, 1, 7}
ls3 = ls1 - ls2
ls4 = ls2 - ls1
print(ls3)
print(ls4)
результатом выполнения данного фрагмента будет
{3, 4, 5, 6}
{7}
Симметричная разность множеств
Симметричной разностью двух множеств называется множество, которое состоит из элементов, которые входят либо в первое множество либо во второе, но не в оба одновременно.
ls1 = {1, 2, 3, 4, 5, 6}
ls2 = {2, 1, 7}
ls3 = ls1 ^ ls2
print(ls3)
результат выполнения данного фрагмента будет
{3, 4, 5, 6, 7}
Вхождение множеств
В отношение множеств можно использовать знаки больше > меньше <. В сущности с помощью этих операторов му определяем вхождение множеств.
ls1 = {1, 2, 3, 4, 5, 6}
ls2 = {2, 1, 7}
ls3 = {5, 6, 2, 3}
print(ls1 > ls2)
print(ls1 > ls3)
результат выполнения фрагмента будет
False
True
Т.е. в данном фрагменте мы проверяли вхождение множеств ls2, ls3 в множество ls1.
Если мы добавим равенство, т.е. используем вместо '>' '>=' то, дополнительно будет учтен случай, когда множества просто совпадают.
Задача
Пусть дано два списка чисел. Нужно посчитать сколько чисел входят в оба множества.
Решение представлено в 5502.py.
Конечно, задачу можно было бы решить и в одну строку. Попробуйте сделать это сами. А можно множества не использовать, просто множества придаю решению элегантность.
Продолжение следует...
Пишите комментарии, оценивайте статьи, подписывайтесь на мой канал Old Programmer.
#программирование #программисты #юмор #развлечения