Существуют операторы, которые позволяют различными способами комбинировать множества. Эти операторы максимально похожи на те, что применяются в теории множеств в математике. Эта похожесть — очень важное свойство, которые мы изучим в этом уроке.
Операции над множествами как методы
С теорией множеств программисты обычно знакомы, хотя бы поверхностно. Поэтому множества нужно использовать в сочетании с операторами. Однако было бы неправильно умолчать, что у каждого оператора есть свой словесный метод-аналог.
Познакомимся с этими методами-аналогами:
a.union(b) # аналог "a | b"
a.intersection(b) # аналог "a & b"
a.difference(b) # аналог "a - b"
a.symmetric_difference(b) # аналог "a ^ b"
Обновление множеств «по месту»
Есть еще одна причина, по которой мы рассказываем про четыре метода выше. Вспомним метод update
у словаря, который обновляет словарь «по месту» с помощью данных из другого словаря.
Так вот, для множеств существует несколько таких update-методов:
difference_update
intersection_update
symmetric_difference_update
update
Рассмотрим их подробнее:
Метод
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
, потому что это имя часто используется для сходных по смыслу методов других коллекций.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.