Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Методы объектов множеств Python: Cловари и множества

Существуют операторы, которые позволяют различными способами комбинировать множества. Эти операторы максимально похожи на те, что применяются в теории множеств в математике. Эта похожесть — очень важное свойство, которые мы изучим в этом уроке.

Операции над множествами как методы

С теорией множеств программисты обычно знакомы, хотя бы поверхностно. Поэтому множества нужно использовать в сочетании с операторами. Однако было бы неправильно умолчать, что у каждого оператора есть свой словесный метод-аналог.

Познакомимся с этими методами-аналогами:

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

Рассмотрим их подробнее:

  1. Метод difference_update работает похоже на -/difference. Он удаляет из связанного множества все элементы, которые входят в множество-аргумент:

    a, b = {1, 2}, {2, 3}
    a.difference_update(b)
    a  # {1}
    
  2. Метод intersection_update и его изменяющий аналог &/intersection. Он оставляет в связанном множестве только те элементы, которые входят и в множество-аргумент:

    a, b = {1, 2}, {2, 3}
    a.intersection_update(b)
    a  # {2}
    
  3. Метод symmetric_difference_update и его изменяющий аналог ^/symmetric_difference. Он добавляет в связанное множество элементы, которые есть только в множестве-аргументе. Также он удаляет элементы, которые есть в обоих множествах:

    a, b = {1, 2}, {2, 3}
    a.symmetric_difference_update(b)
    a  # {1, 3}
    
  4. Метод update и его изменяющий аналог |/union. Он дополняет связанное множество отсутствующими элементами из множества-аргумента:

    a, b = {1, 2}, {2, 3}
    a.update(b)
    a  # {1, 2, 3}
    

    С точки зрения единообразия метод update надо было бы назвать union_update. Для него выбрали более распространенное имя update, потому что это имя часто используется для сходных по смыслу методов других коллекций.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
Обучитесь разработке бэкенда сайтов и веб-приложений — серверной части, которая отвечает за логику и базы данных
10 месяцев
с нуля
Старт 7 ноября
профессия
новый
Собирайте, анализируйте и интерпретируйте данные, улучшайте бизнес-процессы и продукт компании. Обучитесь работе с библиотеками Python
9 месяцев
с нуля
Старт 7 ноября

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»