Old Programmer
5188 subscribers

Программирование на языке Python. Множества (статья 2)

<100 full reads

Сегодня на Old Programmer мы продолжаем серию статей о множествах в языке Python.

Множества в языке программирования Python

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

Сегодня говорим об операторах, которые поддерживают основные действия над множествами: объединение, пересечение, разность, симметричная разность.

Но начнем мы с очень важного вопроса. Равенство множеств. Два множества будут равны, если

  1. Количество элементов множеств совпадают.
  2. Для каждого элемента первого множества найдется равный ему элемент во втором множестве.

Кстати, количество элементов в множестве можно найти с помощью универсальной глобальной функции 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.

Питон он и есть Питон
Питон он и есть Питон

#программирование #программисты #юмор #развлечения