Операции над множествами
На этом занятии мы рассмотрим несколько полезных функций для работы с множествами, а также вопросы, связанные с операциями над множествами и их сравнения.
Для определения длины (числа элементов) множества используется функция len:
Для проверки наличия значения в множестве используется оператор in:
Он возвращает True, если значение имеется и False в противном случае. Или можно проверить на непринадлежность какого-либо значения:
Пересечение множеств
Для любых двух множеств:
можно вычислять их пересечение, то есть, находить значения, входящие в состав обоих множеств. Это делается с помощью оператора &:
Здесь создается новое множество с соответствующими значениями. Сами исходные множества остаются без изменений. Мы можем сохранить ссылку на этот результат вот так:
Или, сделать так:
это же будет эквивалентно такой записи:
Если пересекающихся значений нет, например, вот с таким множеством:
будет пустое множество.
Этот оператор можно заменить эквивалентным методом intersection:
который возвращает результат пересечения этих множеств. Сами же множества остаются без изменений. То есть, его обычно используют так:
Но если мы хотим выполнить эквивалент вот такой операции:
то для этого следует использовать метод intersection_update:
Теперь множество seta хранит результат пересечения.
Объединение множеств
Противоположная операция – объединение двух множеств выполняется с помощью оператора |:
на выходе получим новое множество неповторяющихся значений из обоих множеств:
Эту же операцию можно записать и так:
тогда на результат объединения будет ссылаться переменная setA. Или же можно воспользоваться методом
который возвращает множество из объединенных значений.
Вычитания множеств
Следующая операция – это вычитание множеств. Например, для множеств:
возвратит новое множество, в котором из множества setA будут удалены все значения, существующие в множестве setB:
Или, наоборот, из множества setB вычесть множество setA:
из которых исключены величины, входящие в множество setA.
Также можно выполнять эквивалентные операции:
В этом случае переменные setA и setB будут ссылаться на соответствующие результаты вычитаний.
Следующая операция симметричная разность на выходе дает такое множество:
то есть, множество, составленное из значений, не входящих одновременно в оба множества. В данном случае получим результат:
Сравнение множеств
Множества можно сравнивать между собой:
На равенство
В данном случае получим False, т.к. множества не равны. Они считаются равными, если все элементы, входящие в одно множество, также принадлежат другому множеству и мощности этих множеств равны (то есть они содержат одинаковое число элементов). Например, такие:
вернет значение True. Как видите, порядок элементов в множествах не играет роли при их сравнении.
На неравенство
Противоположное сравнение на неравенство записывается так:
и возвращает True, если множества не равны и False, если равны.
На больше, меньше
В Python операторы применительно к множествам, по сути, определяют вхождение или не вхождение одного множества в другое. Математически, одно множество принадлежит (входит) другому, если все элементы первого множества принадлежат элементам второго множества:
Например, возьмем множества
вернет True, а операция
значение False. Но, если хотя бы один элемент множества setB не будет принадлежать множеству setA:
то обе операции вернут False.
Для равных множеств
обе операции также вернут False. Но вот такие операторы:
Это основные операции работы над множествами. В качестве самостоятельного задания напишите программу, которая из введенного с клавиатуры текста определяет число уникальных слов. Для простоты можно полагать, что слова разделяются пробелом или символом переноса строки ‘\n’.
Видео по теме
#1. Первое знакомство с Python Установка на компьютер
#2. Варианты исполнения команд. Переходим в PyCharm
#3. Переменные, оператор присваивания, функции type и id
#4. Числовые типы, арифметические операции
#5. Математические функции и работа с модулем math
#6. Функции print() и input(). Преобразование строк в числа int() и float()
#7. Логический тип bool. Операторы сравнения и операторы and, or, not
#8. Введение в строки. Базовые операции над строками
#9. Знакомство с индексами и срезами строк
#10. Основные методы строк
#11. Спецсимволы, экранирование символов, row-строки
#12. Форматирование строк: метод format и F-строки
#13. Списки — операторы и функции работы с ними
#14. Срезы списков и сравнение списков
#15. Основные методы списков
#16. Вложенные списки, многомерные списки
#17. Условный оператор if. Конструкция if-else
#18. Вложенные условия и множественный выбор. Конструкция if-elif-else
#19. Тернарный условный оператор. Вложенное тернарное условие
#20. Оператор цикла while
#21. Операторы циклов break, continue и else
#22. Оператор цикла for. Функция range()
#23. Примеры работы оператора цикла for. Функция enumerate()
#24. Итератор и итерируемые объекты. Функции iter() и next()
#25. Вложенные циклы. Примеры задач с вложенными циклами
#26. Треугольник Паскаля как пример работы вложенных циклов
#27. Генераторы списков (List comprehensions)
#28. Вложенные генераторы списков
#29. Введение в словари (dict). Базовые операции над словарями
#30. Методы словаря, перебор элементов словаря в цикле
#31. Кортежи (tuple) и их методы
#32. Множества (set) и их методы
#33. Операции над множествами, сравнение множеств
#34. Генераторы множеств и генераторы словарей
#35. Функции: первое знакомство, определение def и их вызов
#36. Оператор return в функциях. Функциональное программирование
#37. Алгоритм Евклида для нахождения НОД
#38. Именованные аргументы. Фактические и формальные параметры
#39. Функции с произвольным числом параметров *args и **kwargs
#40. Операторы * и ** для упаковки и распаковки коллекций
#41. Рекурсивные функции
#42. Анонимные (lambda) функции
#43. Области видимости переменных. Ключевые слова global и nonlocal
#44. Замыкания в Python
#45. Введение в декораторы функций
#46. Декораторы с параметрами. Сохранение свойств декорируемых функций
#47. Импорт стандартных модулей. Команды import и from
#48. Импорт собственных модулей
#49. Установка сторонних модулей (pip install). Пакетная установка
#50. Пакеты (package) в Python. Вложенные пакеты
#51. Функция open. Чтение данных из файла
#52. Исключение FileNotFoundError и менеджер контекста (with) для файлов
#53. Запись данных в файл в текстовом и бинарном режимах
#54. Выражения генераторы
#55. Функция-генератор. Оператор yield
#56. Функция map. Примеры ее использования
#57. Функция filter для отбора значений итерируемых объектов
#58. Функция zip. Примеры использования
#59. Сортировка с помощью метода sort и функции sorted
#60. Аргумент key для сортировки коллекций по ключу
#61. Функции isinstance и type для проверки типов данных
#62. Функции all и any. Примеры их использования
#63. Расширенное представление чисел. Системы счисления
#64. Битовые операции И, ИЛИ, НЕ, XOR. Сдвиговые операторы
#65. Модуль random стандартной библиотеки
© 2021 Частичное или полное копирование информации с данного сайта для распространения на других ресурсах, в том числе и бумажных, строго запрещено. Все тексты и изображения являются собственностью сайта
Источник
Как вывести разность множеств
Объединение множеств X и Y — это множество, состоящее из всех тех и только тех элементов, которые принадлежат хотя бы одному из множеств X или Y, т.е. принадлежат X или принадлежат Y.
Объединение X и Y обозначается через X∪Y
Формально x∈X∪Y ⇔ x∈X или x∈Y
Пример 3. Если X — множество точек левого круга и Y — множество точек правого круга, то
X∪Y — заштрихованная область, ограниченная обоими кругами.
Понятие объединения можно распространить и на большее число множеств, на систему множеств. Обозначим через М=
представляет собой множество, состоящее из всех тех и только тех элементов, которые принадлежат хотя бы одному из множеств данной системы М.
Для объединенных множеств справедливы:
- X∪Y = Y∪X — коммутативный закон
- (X∪Y)∪Z = X∪(Y∪Z) = X∪Y∪Z — ассоциативный закон,
справедливость которых вытекает из того, что левая и правая части равенств состоят из одних и тех же элементов.
Очевидно, что X∪∅ = X. Отсюда можно видеть, что ∅ играет роль нуля в алгебре множеств.
2. Пересечение множеств
Пересечение множеств X и Y — это множество, состоящее из всех тех и только тех элементов, которые принадлежат как множеству X, так и множеству Y.
Пересечение множеств обозначается X∩Y.
Формально x∈X∩Y ⇔ x∈X и x∈Y
Пример 5. Если Х — множество точек левого круга, а Y — множество точек правого круга, то X∩Y представляет собой заштрихованную область, являющуюся общей частью обоих кругов.
Множества X и Y называются непересекающимися (дизъюнктными), если они не имеют общих элементов, то есть если X∩Y=∅.
Частный случай: кортеж длины 1 —
кортеж длины 0 — или ∧ — пустой кортеж.
Отличие кортежа и обыкновенного множества: в кортеже могут быть одинаковые элементы.
Упорядоченные множества, элементами которых являются вещественные числа, будем называть векторами или точками пространства (n-мерного).
Обобщая эти понятия, будем рассматривать упорядоченное n-элементное множество вещественных чисел (a1, . an) как точку в воображаемом n–мерном пространстве (иногда называемом гиперпространством), или как n-мерный вектор. При этом компоненты n-элементного кортежа а будем рассматривать как проекции этого кортежа на соответствующие оси.
Два вектора равны, если они имеют одинаковую длину и соответствующие координаты их равны.
Компонентами кортежа (вектора) могут быть также компоненты кортежи (векторы):
Пример. Слова в предложении,
Прямое произведение множеств
Прямым (декартовым) произведением множеств X и Y называется множество, состоящее из всех тех и только тех упорядоченных пар, первая компонента которых принадлежит множеству X, а вторая принадлежит множеству Y.
Пример 2. Пусть X= , Y=
Тогда X*Y= < , , , , , >См. рис. а).
Пример 3. Пусть X и Y — отрезки вещественной оси. Прямое произведение X*Y изображается заштрихованным прямоугольником. См. рис. б).
Прямое произведение изменяется при изменении порядка сомножителей т.е.
Прямое произведение множеств X1, X2, . Xn — это множество, обозначаемое X1*X2*. *Xn и состоящее из всех тех и только тех кортежей длины n, правая компонента которых принадлежит X1, вторая — X2 и т.д.
Очевидно X*Y = ∅ ⇔ X = ∅ или Y = ∅.
Аналогично X1*X2*. *Xn = ∅ тогда и только тогда, когда хотя бы одно из множеств X1, X2, . Xn является пустым.
Частным случаем прямого произведения является понятие степеней (декартовых) множества — прямое произведение одинаковых множеств
M s =M*M*. *M, M 1 =M, M 0 =∧.
Обычно R — множество вещественных чисел, тогда R 2 =R*R — вещественная плоскость и R 3 =R*R*R — трехмерное вещественное пространство.
Тогда A*B =1, a2, a3, . h7, h8> — множество обозначающее все 64 клеток шахматной доски.
Пример. Пусть A — конечное множество, элементами которого являются символы (буквы, цифры, знаки препинания и т.д.). Такие множества обычно называют алфавитами. Элементы множества an называются словами длины n в алфавите A. Множество всех символов в алфавите A — это множество A * = ∪A i = A 1 ∪A 2 ∪A 3 . . При написании слов не принято пользоваться ни запятыми, ни скобками, ни разделителями.
Проекция множества.
Операция программирования множества тесно связана с операцией проектирования кортежа и может применяться лишь к таким множествам, элементами которых являются кортежи одинаковой длины.
Пусть M — множество, состоящее из кортежей длины S. Тогда пролинией множества M будем называть множество пролиний всех кортежей из М
Очевидно что если М=Х*Y то Пр1М=Х, Пр2М=Y
и если Q⊆Х*Y то Пр1Q⊆Х и Пр2Q⊆Y
Пусть V — множество векторов одинаковой длины S.
В общем случае ПрiV — вовсе не обязательно прямое произведение: оно может быть подмножеством.
Источник