- Множества в Python set() Примеры
- Создание множеств
- Доступ к элементам множеств
- Добавление элементов во множество
- Удаление элемента из множеств
- Объединение множеств
- Пересечение множеств
- Разница между множествами
- Сравнение множеств
- Методы множеств
- Метод copy()
- Метод isdisjoint()
- Метод len()
- Frozenset в Python
- Вывод
Множества в Python set() Примеры
Множества в Python – это структура данных, которые содержат неупорядоченные элементы. Элементы также не является индексированным. Как и список, множество позволяет внесение и удаление элементов. Однако, есть ряд особенных характеристик, которые определяют и отделяют множество от других структур данных:
- Множество не содержит дубликаты элементов;
- Элементы множества являются неизменными (их нельзя менять), однако само по себе множество является изменяемым, и его можно менять;
- Так как элементы не индексируются, множества не поддерживают никаких операций среза и индексирования.
В этой статье мы обсудим различные операции, которые можно применять на множествах в Python.
- Создание множеств
- Доступ к элементам множеств
- Добавление элементов во множество
- Удаление элементов из множеств
- Объединение множеств
- Пересечение множеств
- Разница множеств
- Сравнение множеств
- Методы множеств
- Frozenset в Python
- Вывод
Создание множеств
Существует два пути, следуя которым, мы можем создавать множества в Python.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Мы можем создать множество путем передачи всех элементов множества внутри фигурных скобок <> и разделить элементы при помощи запятых (,) . Множество может содержать любое количество элементов и элементы могут быть разных типов, к примеру, целые числа, строки, кортежи, и т. д. Однако, множество не поддерживает изменяемые элементы, такие как списки, словари, и так далее.
Рассмотрим пример создания множества в Python:
Только что мы создали множество чисел. Мы также можем создать множество из строк. Например:
Возможно вы обратили внимание на то, что элементы в выдаче выше находятся в другом порядке, отличном от того, как мы добавляли их в множество. Это связано с тем, что элементы множества находятся в произвольном порядке. Если вы запустите тот же код еще раз, возможно вы получите выдачу с элементами, которые каждый раз будут находиться в другом порядке.
Мы также можем создать множество с элементами разных типов. Например:
Все элементы в упомянутом выше множестве принадлежат разным типам.
Мы также можем создать множество из списков. Это можно сделать, вызвав встроенную функцию Python под названием set() . Например:
Как упоминалось ранее, множества не содержат дубликаты элементов. Предположим, наш список содержит дубликаты элементов, как показано ниже:
Множество удалило дубликаты и выдало только по одному экземпляру элементов. Это также происходит при создании множества с нуля. Например:
И снова, множество удалило дубликаты и вернуло только один из дублируемых объектов.
Создание пустого множества подразумевает определенную хитрость. Если вы используете пустые фигурные скобки <> в Python, вы скорее создадите пустой словарь, а не множество. Например:
Как показано в выдаче, тип переменной х является словарем.
Чтобы создать пустое множество в Python, мы должны использовать функцию set() без передачи какого-либо значения в параметрах, как показано ниже:
Выдача показывает, что мы создали множество.
Доступ к элементам множеств
Python не предоставляет прямой способ получения значения к отдельным элементам множества. Однако, мы можем использовать цикл для итерации через все элементы множества. Например:
months = set ( [ «Jan» , «Feb» , «March» , «Apr» , «May» , «June» , «July» , «Aug» , «Sep» , «Oct» , «Nov» , «Dec» ] )
Мы также можем проверить наличие элемента во множестве при помощи in , как показано ниже:
months = set ( [ «Jan» , «Feb» , «March» , «Apr» , «May» , «June» , «July» , «Aug» , «Sep» , «Oct» , «Nov» , «Dec» ] )
Код возвращает «True«, а это означает, что элемент был найден во множестве. Аналогичным образом, при поиске элемента, который отсутствует во множестве, мы получим «False«, как показано ниже:
months = set ( [ «Jan» , «Feb» , «March» , «Apr» , «May» , «June» , «July» , «Aug» , «Sep» , «Oct» , «Nov» , «Dec» ] )
Как и ожидалось, код вернул «False«.
Добавление элементов во множество
Python позволяет нам вносить новые элементы во множество при помощи функции add() . Например:
months = set ( [ «Jan» , «March» , «Apr» , «May» , «June» , «July» , «Aug» , «Sep» , «Oct» , «Nov» , «Dec» ] )
Элемент «Feb» успешно внесен во множество. Если это было множество чисел, мы не можем передать новый элемент внутри скобочек, как мы делаем это для строк. Например:
В следующем разделе мы обсудим, как удалять элементы из множеств.
Удаление элемента из множеств
Python позволяет нам удалять элемент из множества, но не используя индекс, так как множество элементов не индексированы. Элементы могут быть удалены при помощи обоих методов discard() и remove() .
Помните, что метод discard() не будет выдавать ошибку, если элемент не был найден во множестве. Однако, если метод remove() используется и элемент не был найден, возникнет ошибка.
Давайте продемонстрируем как удалять элемент при помощи метода discard() :
Элемент 3 был удален из множества.
Аналогично, метод remove() может использоваться следующим образом:
Теперь попробуем удалить элемент, которого нет во множестве. Сначала используем метод discard() :
Выдача выше показывает, что никакого воздействия на множество не было оказано. Теперь посмотрим, что выйдет из использования метода remove() по аналогичному сценарию:
Выдача показывает, что метод выдал ошибку KeyError, так как мы пытались удалить элемент, которого нет во множестве.
С методом pop() , мы можем удалить и вернуть элемент. Так как элементы находятся в произвольном порядке, мы не можем утверждать или предсказать, какой элемент будет удален.
Вы можете использовать тот же метод при удалении элемента и возврате элементов, которые остаются во множестве. Например:
Эти элементы остаются во множестве.
Метод Python под названием clear() поможет удалить все элементы во множестве. Например:
Результатом является пустой set() без каких-либо элементов внутри.
Объединение множеств
Предположим, у нас есть два множества, А и В. Объединение этих двух множеств — это множество со всеми элементами обеих множеств. Такая операция выполняется при помощи функции Python под названием union() .
Объединение может состоять из более чем двух множеств, и все их элементы сложатся в одно большое множество. Например:
При выполнении операции объединения, дубликаты игнорируются, так что только один из двух элементов дубликатов будет отображаться. Например:
Оператор | может также использоваться при поиске объединения двух или более множеств. Например:
Если вы хотите создать объединение из более двух множеств, разделите названия множеств при помощи оператора | . Взглянем на пример:
Пересечение множеств
Предположим, у вас есть два множества: А и В. Их пересечение представляет собой множество элементов, которые являются общими для А и для В.
Операция пересечения во множествах может быть достигнута как при помощи оператора & , так и метода intersection() . Рассмотрим пример:
В обеих множествах 3 является общим элементом. То же самое может быть достигнуто при использовании метода intersection() :
В следующем разделе мы обсудим, как определить разницу между множествами.
Разница между множествами
Предположим, у вас есть два множества: А и В. Разница между А и В (А — В) — это множество со всеми элементами, которые содержатся в А, но не в В. Соответственно, (В — А) — это множество со всеми элементами в В, но не в А.
Для определения разницы между множествами в Python, мы можем использовать как функцию difference(), так и оператор — . Рассмотрим пример:
В показанном выше скрипте, только первые три элемента множества set_a отсутствуют во множестве set_b , формируя нашу выдачу. Оператор минус — можно также применить для нахождения разницы между двумя множествами, как показано ниже:
Симметричная разница между множествами А и В — это множество с элементами, которые находятся в А и В, за исключением тех элементов, которые являются общими для обеих множеств. Это определяется использованием метода Python под названием symmetric_difference() , или оператора ^ . Посмотрим на пример:
Симметричную разницу можно также найти следующим образом:
Сравнение множеств
Мы можем сравнить множества в зависимости от того, какие элементы в них содержатся. Таким образом, мы можем сказать, является ли множество родительским, или дочерним от другого множества. Результат такого сравнения будет либо True , либо False .
Чтобы проверить, является ли множество А дочерним от В, мы можем выполнить следующую операцию:
Чтобы узнать является ли множество В дочерним от А, мы можем выполнить следующую операцию, соответственно:
months_b = set ( [ «Jan» , «Feb» , «March» , «Apr» , «May» , «June» , «July» , «Aug» , «Sep» , «Oct» , «Nov» , «Dec» ] )
Дочернее и родительское множество может также быть проверено при помощи методов issubset() и issuperset() , как показано ниже:
months_b = set ( [ «Jan» , «Feb» , «March» , «Apr» , «May» , «June» , «July» , «Aug» , «Sep» , «Oct» , «Nov» , «Dec» ] )
В следующем разделе мы обсудим некоторые из наиболее часто используемых методов для манипуляции множествами, предоставленных в Python, которые мы не успели упомянуть.
Методы множеств
Python содержит огромное количество встроенных методов, включая следующие:
Метод copy()
Этот метод возвращает копию множества. Например:
Выдача показывает, что х является копией множества string_set .
Метод isdisjoint()
Этот метод проверяет, является ли множество пересечением или нет. Если множества не содержат общих элементов, метод возвращает True , в противном случае — False . Например:
Оба множества не имеют общих элементов, что делает выдачу True .
Метод len()
Этот метод возвращает длину множества, которая является общим количеством элементов во множестве. Пример:
Выдача показывает, что длина множества является 4.
Frozenset в Python
Frozenset (замороженное множество) – это класс с характеристиками множества, однако, как только элементы становятся назначенными, их нельзя менять. Кортежи могут рассматриваться как неизменяемые списки, в то время как frozenset-ы — как неизменные множества.
Множества являются изменяемыми и нехешируемыми, это значит, что мы не можем использовать их как словарные ключи. Замороженные множества (frozenset) являются хешированными и могут использоваться в качестве ключей словаря.
Для создания замороженного множества, мы используем метод frozenset() . Давайте создадим два замороженных множества, Х и Y:
Замороженные множества поддерживают использование множественных методов Python, таких как copy() , difference() , symmetric_difference() , isdisjoint() , issubset() , intersection() , issuperset() и union() .
Вывод
Данная статья предоставляет подробное введение во множества языка программирования Python. Математическое определение множеств аналогично определению множеств в Python.
Множество — это набор элементов в произвольном порядке. Само по себе, множество является изменяемым, однако его элементы являются неизменяемыми.
Однако, мы можем добавлять и убирать элементы из множества без каких-либо проблем. В большей структур данных элементы являются индексированными. Однако, элементы множеств не являются индексированными. Это делает невозможным для нас выполнять операции, которые направлены на определенные элементы множества.
Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.
E-mail: vasile.buldumac@ati.utm.md
Образование
Universitatea Tehnică a Moldovei (utm.md)
- 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»