На этом занятии мы рассмотрим несколько полезных функций для работы с множествами, а также вопросы, связанные с операциями над множествами и их сравнения.
Для определения
длины (числа элементов) множества используется функция len:
a={"abc", (1,2), 5, 4, True}
len(a)
Для проверки
наличия значения в множестве используется оператор in:
Он возвращает True, если значение
имеется и False в противном
случае. Или можно проверить на непринадлежность какого-либо значения:
Пересечение множеств
Для любых двух
множеств:
setA = {1,2,3,4}
setB = {3,4,5,6,7}
можно вычислять
их пересечение, то есть, находить значения, входящие в состав обоих множеств.
Это делается с помощью оператора &:
Здесь создается
новое множество с соответствующими значениями. Сами исходные множества остаются
без изменений. Мы можем сохранить ссылку на этот результат вот так:
Или, сделать
так:
это же будет
эквивалентно такой записи:
Если
пересекающихся значений нет, например, вот с таким множеством:
то результатом:
будет пустое
множество.
Этот оператор
можно заменить эквивалентным методом intersection:
setA = {1,2,3,4}
setB = {3,4,5,6,7}
setA.intersection(setB)
который
возвращает результат пересечения этих множеств. Сами же множества остаются без
изменений. То есть, его обычно используют так:
res = setA.intersection(setB)
Но если мы хотим
выполнить эквивалент вот такой операции:
то для этого
следует использовать метод intersection_update:
setA.intersection_update(setB)
Теперь множество
seta хранит
результат пересечения.
Объединение множеств
Противоположная
операция – объединение двух множеств выполняется с помощью оператора |:
setA = {1,2,3,4}
setB = {3,4,5,6,7}
setA | setB
на выходе
получим новое множество неповторяющихся значений из обоих множеств:
{1,
2, 3, 4, 5, 6, 7}
Эту же операцию
можно записать и так:
тогда на
результат объединения будет ссылаться переменная setA. Или же можно
воспользоваться методом
который
возвращает множество из объединенных значений.
Вычитания множеств
Следующая
операция – это вычитание множеств. Например, для множеств:
setA = {1,2,3,4}
setB = {3,4,5,6,7}
операция
возвратит новое
множество, в котором из множества setA будут удалены
все значения, существующие в множестве setB:
{1, 2}
Или, наоборот,
из множества setB вычесть
множество setA:
получим значения
{5, 6, 7}
из которых
исключены величины, входящие в множество setA.

Также можно
выполнять эквивалентные операции:
setA -= setB # setA = setA - setB
setB -= setA # setB = setB - setA
В этом случае
переменные setA и setB будут ссылаться
на соответствующие результаты вычитаний.
Следующая
операция симметричная разность на выходе дает такое множество:
setA = {1,2,3,4}; setB = {3,4,5,6,7}
setA ^ setB
то есть,
множество, составленное из значений, не входящих одновременно в оба множества. В
данном случае получим результат:
{1, 2, 5, 6, 7}
Сравнение множеств
Множества можно
сравнивать между собой:
На равенство
В данном случае
получим False, т.к. множества
не равны. Они считаются равными, если все элементы, входящие в одно множество,
также принадлежат другому множеству и мощности этих множеств равны (то есть они
содержат одинаковое число элементов). Например, такие:
setA = {7,6,5,4,3}; setB = {3,4,5,6,7}
тогда оператор
вернет значение True. Как видите,
порядок элементов в множествах не играет роли при их сравнении.
На неравенство
Противоположное
сравнение на неравенство записывается так:
и возвращает True, если множества
не равны и False, если равны.
На больше, меньше
В Python операторы <,
> применительно к множествам, по сути, определяют вхождение или не вхождение
одного множества в другое. Математически, одно множество принадлежит (входит)
другому, если все элементы первого множества принадлежат элементам второго
множества:
Например,
возьмем множества
setA = {7,6,5,4,3}; setB = {3,4,5}
тогда операция
вернет True, а операция
значение False. Но, если хотя
бы один элемент множества setB не будет принадлежать множеству setA:
то обе операции
вернут False.
Для равных
множеств
setA = {7,6,5,4,3}; setB = {3,4,5,6,7}
обе операции
также вернут False. Но вот такие
операторы:
setA <= setB
setA >= setB
вернут True.
Это основные
операции работы над множествами. В качестве самостоятельного задания напишите
программу, которая из введенного с клавиатуры текста определяет число
уникальных слов. Для простоты можно полагать, что слова разделяются пробелом
или символом переноса строки ‘\n’.