Существуют операторы, которые позволяют различными способами комбинировать множества. Эти операторы максимально похожи на те, что применяются в теории множеств в математике. Эта похожесть — очень важное свойство, которые мы изучим в этом уроке.
Операции над множествами как методы
С теорией множеств программисты обычно знакомы, хотя бы поверхностно. Поэтому множества нужно использовать в сочетании с операторами. Однако было бы неправильно умолчать, что у каждого оператора есть свой словесный метод-аналог.
Познакомимся с этими методами-аналогами:
a.union(b) # аналог "a | b"
a.intersection(b) # аналог "a & b"
a.difference(b) # аналог "a - b"
a.symmetric_difference(b) # аналог "a ^ b"
Обновление множеств «по месту»
Есть еще одна причина, по которой мы рассказываем про четыре метода выше. Вспомним метод update у словаря, который обновляет словарь «по месту» с помощью данных из другого словаря.
Так вот, для множеств существует несколько таких update-методов:
difference_updateintersection_updatesymmetric_difference_updateupdate
Рассмотрим их подробнее:
Метод
difference_updateработает похоже на-/difference. Он удаляет из связанного множества все элементы, которые входят в множество-аргумент:a, b = {1, 2}, {2, 3} a.difference_update(b) a # {1}Метод
intersection_updateи его изменяющий аналог&/intersection. Он оставляет в связанном множестве только те элементы, которые входят и в множество-аргумент:a, b = {1, 2}, {2, 3} a.intersection_update(b) a # {2}Метод
symmetric_difference_updateи его изменяющий аналог^/symmetric_difference. Он добавляет в связанное множество элементы, которые есть только в множестве-аргументе. Также он удаляет элементы, которые есть в обоих множествах:a, b = {1, 2}, {2, 3} a.symmetric_difference_update(b) a # {1, 3}Метод
updateи его изменяющий аналог|/union. Он дополняет связанное множество отсутствующими элементами из множества-аргумента:a, b = {1, 2}, {2, 3} a.update(b) a # {1, 2, 3}С точки зрения единообразия метод
updateнадо было бы назватьunion_update. Для него выбрали более распространенное имяupdate, потому что это имя часто используется для сходных по смыслу методов других коллекций.
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.