Метод union
Метод union возвращает множество, полученное при объединении элементов множеств, указанных в параметре.
Синтаксис
множество.union(множества, которые хотим объединить)
Пример
Давайте применим метод union , чтобы получить общие элементы для двух множеств:
st1 = <'a', 'b', 'c'>st2 = res = st1.union(st2) print(res)'a',>
Результат выполнения кода:
Пример
У метода union также есть короткая форма:
st1 = <'a', 'b', 'c'>st2 = res = st1 | st2 print(res)'a',>
Результат выполнения кода:
Смотрите также
- метод add ,
который добавляет элементы в множество - метод update ,
который добавляет элементы из других множеств - метод remove ,
который удаляет элементы из множества - функция len ,
которая возвращает длину множества
Как объединить два множества python
Множество (set) представляют еще один вид набора, который хранит только уникальные элементы. Для определения множества используются фигурные скобки, в которых перечисляются элементы:
users = print(users) #
Обратите внимание, что несмотря на то, что функция print вывела один раз элемент «Tom», хотя в определении множества этот элемент содержится два раза. Все потому что множество содержит только уникальные значения.
Также для определения множества может применяться функция set() , в которую передается список или кортеж элементов:
people = [«Mike», «Bill», «Ted»] users = set(people) print(users) #
Функцию set удобно применять для создания пустого множества:
users = set()
Для получения длины множества применяется встроенная функция len() :
users = print(len(users)) # 3
Добавление элементов
Для добавления одиночного элемента вызывается метод add() :
users = set() users.add("Sam") print(users)
Удаление элементов
Для удаления одного элемента вызывается метод remove() , в который передается удаляемый элемент. Но следует учитывать, что если такого элемента не окажется в множестве, то будет сгенерирована ошибка. Поэтому перед удалением следует проверять на наличие элемента с помощью оператора in :
users = user = «Tom» if user in users: users.remove(user) print(users) #
Также для удаления можно использовать метод discard() , который не будет генерировать исключения при отсутствии элемента:
users = users.discard(«Tim») # элемент «Tim» отсутствует, и метод ничего не делает print(users) # users.discard(«Tom») # элемент «Tom» есть, и метод удаляет элемент print(users) #
Для удаления всех элементов вызывается метод clear() :
users.clear()
Перебор множества
Для перебора элементов можно использовать цикл for:
users = for user in users: print(user)
При переборе каждый элемент помещается в переменную user.
Операции с множествами
С помощью метода copy() можно скопировать содержимое одного множества в другую переменную:
users = students = users.copy() print(students) #
Объединение множеств
Метод union() объединяет два множества и возвращает новое множество:
users = users2 = users3 = users.union(users2) print(users3) #
Пересечение множеств
Пересечение множеств позволяет получить только те элементы, которые есть одновременно в обоих множествах. Метод intersection() производит операцию пересечения множеств и возвращает новое множество:
users = users2 = users3 = users.intersection(users2) print(users3) #
Вместо метода intersection мы могли бы использовать операцию логического умножения:
users = users2 = print(users & users2) #
В этом случае мы получили бы тот же результат.
Модификация метода — intersection_update() заменяет пересеченными элементами первое множество:
users = users2 = users.intersection_update(users2) print(users) #
Разность множеств
Еще одна операция — разность множеств возвращает те элементы, которые есть в первом множестве, но отсутствуют во втором. Для получения разности множеств можно использовать метод difference или операцию вычитания:
users = users2 = users3 = users.difference(users2) print(users3) # print(users — users2) #
Отдельная разновидность разности множеств — симметрическая разность производится с помощью метода symmetric_difference() или с помощью операции ^ . Она возвращает все элементы обоих множеств за исключением общих:
users = users2 = users3 = users.symmetric_difference(users2) print(users3) # users4 = users ^ users2 print(users4) #
Отношения между множествами
Метод issubset позволяет выяснить, является ли текущее множество подмножеством (то есть частью) другого множества:
users = superusers = print(users.issubset(superusers)) # True print(superusers.issubset(users)) # False
Метод issuperset , наоборот, возвращает True, если текущее множество является надмножеством (то есть содержит) для другого множества:
users = superusers = print(users.issuperset(superusers)) # False print(superusers.issuperset(users)) # True
frozen set
Тип frozen set является видом множеств, которое не может быть изменено. Для его создания используется функция frozenset :
users = frozenset()
В функцию frozenset передается набор элементов — список, кортеж, другое множество.
В такое множество мы не можем добавить новые элементы, как и удалить из него уже имеющиеся. Собственно поэтому frozen set поддерживает ограниченный набор операций:
- len(s) : возвращает длину множества
- x in s : возвращает True, если элемент x присутствует в множестве s
- x not in s : возвращает True, если элемент x отсутствует в множестве s
- s.issubset(t) : возвращает True, если t содержит множество s
- s.issuperset(t) : возвращает True, если t содержится в множестве s
- s.union(t) : возвращает объединение множеств s и t
- s.intersection(t) : возвращает пересечение множеств s и t
- s.difference(t) : возвращает разность множеств s и t
- s.copy() : возвращает копию множества s
Операции над множествами — Python: Cловари и множества
Если при изучении множеств остановиться на создании и модифицировании, может показаться, что множества не сильно-то и отличаются от списков. Кажется, что они просто позволяют быстрее проверить вхождение элемента, но при этом не поддерживают механизм срезов.
На самом деле, есть более важные аспекты, которые мы и изучим в этом уроке.
Проверка на равенство
Сопоставление множеств — это довольно мощный инструмент. Давайте проверим два множества на равенство:
set([1, 2, 3, 2, 1]) == 3, 1, 2> # True
Можно подумать, что два множества равны, если каждый отдельный элемент одного множества содержится и во втором. Эта догадка близка к истине, но вспомним, что коллекции в Python хранят только ссылки на объекты. Множества равны, если ссылаются на одни и те же объекты. Одинаковые ссылки равны, но при этом могут быть равны и разные объекты.
Дело в том, что в Python есть специальный протокол проверки на равенство. Большинство встроенных типов данных поддерживает этот протокол. Мы можем проверять на равенство числа, строки, булевы значения. А еще можем приравнивать кортежи, списки, словари.
Здесь Python поступает очень разумно. Если вы приравняете две коллекции одного типа, то эти коллекции будут считаться равными, если их элементы попарно равны с точки зрения протокола. Посмотрите:
[1, 2, ["foo", "bar"]] == [1, 2, ["foo"] + ["bar"]] # True (1, True, []) == (1, True, []) # True "a": 1, "b": 2> == "b": 2, "a": 1> # True
Словари равны, если порядок ключей разный — лишь бы были равны значения по соответствующим ключам и сами наборы ключей были одинаковыми.
Вот и множества равны, если содержат одинаковые наборы равных попарно элементов.
Объединение множеств
По аналогии с множествами в математике, множества в Python поддерживают операцию объединения (union). Эта операция не объединяет множества, а возвращает новый объект.
Этот объект — это такое множество, которое содержит все элементы, содержащиеся хотя бы в одном из оригинальных множеств. По смыслу объединение похоже на операцию «ИЛИ» из булевой логики: элемент будет присутствовать в объединении, если он присутствует в первом исходном множестве ИЛИ во втором. Так это выглядит на схеме:
Для объединения множеств в Python используется оператор | :
visited_by_masha = 'Paris', 'London'> visited_by_kolya = 'Moscow', 'Paris'> visited_by_kolya | visited_by_masha #
Пересечение множеств
Еще есть «операция И» — пересечение множеств (intersection). В пересечение входят элементы, присутствующие в первом из оригинальных множеств И во втором:
В Python оператор пересечения — & :
visited_by_masha = 'Paris', 'London'> visited_by_kolya = 'Moscow', 'Paris'> visited_by_kolya & visited_by_masha #
Разность множеств
Разность множеств (difference) — такое множество, элементы которого содержатся в первом оригинальном множестве, но не содержатся во втором. Разность представлена оператором — , потому что по смыслу оператор похож на вычитание из арифметики:
visited_by_masha = 'Paris', 'London'> visited_by_kolya = 'Moscow', 'Paris'> visited_by_masha - visited_by_kolya # visited_by_kolya - visited_by_masha #
Так разность можно обозначить на схеме:
Симметрическая разность
Симметрическая разность (symmetric difference) — множество, в которое входят элементы, присутствующие ЛИБО в первом, ЛИБО во втором оригинальном множестве:
По смыслу операция похожа на исключающее ИЛИ (xor), поэтому и представлена оператором ^ :
visited_by_masha = 'Paris', 'London'> visited_by_kolya = 'Moscow', 'Paris'> visited_by_kolya ^ visited_by_masha #
Подмножества и надмножества
Одно множество является подмножеством другого (subset), если все элементы первого входят во второе, но второе может содержать еще и другие элементы. Второе в этом случае является надмножеством для первого (superset):
При этом равные множества являются друг для друга одновременно и подмножествами и надмножествами.
В Python соотношение множеств можно проверить с помощью методов issubset и issuperset :
a = 1, 2, 3, 4> b = 3, 4>
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Множества в Python set() Примеры
Множества в Python – это структура данных, которые содержат неупорядоченные элементы. Элементы также не является индексированным. Как и список, множество позволяет внесение и удаление элементов. Однако, есть ряд особенных характеристик, которые определяют и отделяют множество от других структур данных:
- Множество не содержит дубликаты элементов;
- Элементы множества являются неизменными (их нельзя менять), однако само по себе множество является изменяемым, и его можно менять;
- Так как элементы не индексируются, множества не поддерживают никаких операций среза и индексирования.
В этой статье мы обсудим различные операции, которые можно применять на множествах в Python.
Содержание:
- Создание множеств
- Доступ к элементам множеств
- Добавление элементов во множество
- Удаление элементов из множеств
- Объединение множеств
- Пересечение множеств
- Разница множеств
- Сравнение множеств
- Методы множеств
- Frozenset в Python
- Вывод
Создание множеств
Существует два пути, следуя которым, мы можем создавать множества в Python.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Мы можем создать множество путем передачи всех элементов множества внутри фигурных скобок <> и разделить элементы при помощи запятых (,) . Множество может содержать любое количество элементов и элементы могут быть разных типов, к примеру, целые числа, строки, кортежи, и т. д. Однако, множество не поддерживает изменяемые элементы, такие как списки, словари, и так далее.
Рассмотрим пример создания множества в Python:
print ( num_set )
Только что мы создали множество чисел. Мы также можем создать множество из строк. Например:
string_set = < "Nicholas" , "Michelle" , "John" , "Mercy" >
print ( string_set )
Возможно вы обратили внимание на то, что элементы в выдаче выше находятся в другом порядке, отличном от того, как мы добавляли их в множество. Это связано с тем, что элементы множества находятся в произвольном порядке. Если вы запустите тот же код еще раз, возможно вы получите выдачу с элементами, которые каждый раз будут находиться в другом порядке.
Мы также можем создать множество с элементами разных типов. Например:
print ( mixed_set )
Все элементы в упомянутом выше множестве принадлежат разным типам.
Мы также можем создать множество из списков. Это можно сделать, вызвав встроенную функцию Python под названием set() . Например:
num_set = set ( [ 1 , 2 , 3 , 4 , 5 , 6 ] )
print ( num_set )
Как упоминалось ранее, множества не содержат дубликаты элементов. Предположим, наш список содержит дубликаты элементов, как показано ниже:
num_set = set ( [ 1 , 2 , 3 , 1 , 2 ] )
print ( num_set )
Множество удалило дубликаты и выдало только по одному экземпляру элементов. Это также происходит при создании множества с нуля. Например:
print ( num_set )
И снова, множество удалило дубликаты и вернуло только один из дублируемых объектов.
Создание пустого множества подразумевает определенную хитрость. Если вы используете пустые фигурные скобки <> в Python, вы скорее создадите пустой словарь, а не множество. Например:
print ( type ( x ) )
Как показано в выдаче, тип переменной х является словарем.
Чтобы создать пустое множество в Python, мы должны использовать функцию set() без передачи какого-либо значения в параметрах, как показано ниже:
print ( type ( x ) )
Выдача показывает, что мы создали множество.
Доступ к элементам множеств
Python не предоставляет прямой способ получения значения к отдельным элементам множества. Однако, мы можем использовать цикл для итерации через все элементы множества. Например:
months = set ( [ «Jan» , «Feb» , «March» , «Apr» , «May» , «June» , «July» , «Aug» , «Sep» , «Oct» , «Nov» , «Dec» ] )
for m in months :
Мы также можем проверить наличие элемента во множестве при помощи in , как показано ниже:
months = set ( [ «Jan» , «Feb» , «March» , «Apr» , «May» , «June» , «July» , «Aug» , «Sep» , «Oct» , «Nov» , «Dec» ] )
print ( «May» in months )
Код возвращает «True«, а это означает, что элемент был найден во множестве. Аналогичным образом, при поиске элемента, который отсутствует во множестве, мы получим «False«, как показано ниже:
months = set ( [ «Jan» , «Feb» , «March» , «Apr» , «May» , «June» , «July» , «Aug» , «Sep» , «Oct» , «Nov» , «Dec» ] )
print ( «Nicholas» in months ) # False
Как и ожидалось, код вернул «False«.
Добавление элементов во множество
Python позволяет нам вносить новые элементы во множество при помощи функции add() . Например:
months = set ( [ «Jan» , «March» , «Apr» , «May» , «June» , «July» , «Aug» , «Sep» , «Oct» , «Nov» , «Dec» ] )
months . add ( «Feb» )
print ( months )
Элемент «Feb» успешно внесен во множество. Если это было множество чисел, мы не можем передать новый элемент внутри скобочек, как мы делаем это для строк. Например:
num_set . add ( 4 )
print ( num_set )
В следующем разделе мы обсудим, как удалять элементы из множеств.
Удаление элемента из множеств
Python позволяет нам удалять элемент из множества, но не используя индекс, так как множество элементов не индексированы. Элементы могут быть удалены при помощи обоих методов discard() и remove() .
Помните, что метод discard() не будет выдавать ошибку, если элемент не был найден во множестве. Однако, если метод remove() используется и элемент не был найден, возникнет ошибка.
Давайте продемонстрируем как удалять элемент при помощи метода discard() :
num_set . discard ( 3 )
print ( num_set )
Элемент 3 был удален из множества.
Аналогично, метод remove() может использоваться следующим образом:
num_set . remove ( 3 )
print ( num_set )
Теперь попробуем удалить элемент, которого нет во множестве. Сначала используем метод discard() :
num_set . discard ( 7 )
print ( num_set )
Выдача выше показывает, что никакого воздействия на множество не было оказано. Теперь посмотрим, что выйдет из использования метода remove() по аналогичному сценарию:
num_set . remove ( 7 )
print ( num_set )
Traceback ( most recent call last ) :
File «C:\Users\admin\sets.py» , line 2 , in < module >
num_set . remove ( 7 )
KeyError : 7
Выдача показывает, что метод выдал ошибку KeyError, так как мы пытались удалить элемент, которого нет во множестве.
С методом pop() , мы можем удалить и вернуть элемент. Так как элементы находятся в произвольном порядке, мы не можем утверждать или предсказать, какой элемент будет удален.
print ( num_set . pop ( ) )
Вы можете использовать тот же метод при удалении элемента и возврате элементов, которые остаются во множестве. Например:
num_set . pop ( )
print ( num_set )
Эти элементы остаются во множестве.
Метод Python под названием clear() поможет удалить все элементы во множестве. Например:
num_set . clear ( )
print ( num_set )
Результатом является пустой set() без каких-либо элементов внутри.
Объединение множеств
Предположим, у нас есть два множества, А и В. Объединение этих двух множеств — это множество со всеми элементами обеих множеств. Такая операция выполняется при помощи функции Python под названием union() .
months_a = set ( [ «Jan» , «Feb» , «March» , «Apr» , «May» , «June» ] )
months_b = set ( [ «July» , «Aug» , «Sep» , «Oct» , «Nov» , «Dec» ] )
all_months = months_a . union ( months_b )
print ( all_months )
Объединение может состоять из более чем двух множеств, и все их элементы сложатся в одно большое множество. Например:
output = x . union ( y , z )
print ( output )
При выполнении операции объединения, дубликаты игнорируются, так что только один из двух элементов дубликатов будет отображаться. Например:
output = x . union ( y , z )
print ( output )
Оператор | может также использоваться при поиске объединения двух или более множеств. Например:
months_a = set ( [ «Jan» , «Feb» , «March» , «Apr» , «May» , «June» ] )
months_b = set ( [ «July» , «Aug» , «Sep» , «Oct» , «Nov» , «Dec» ] )
print ( months_a | months_b )
Если вы хотите создать объединение из более двух множеств, разделите названия множеств при помощи оператора | . Взглянем на пример:
print ( x | y | z )
Пересечение множеств
Предположим, у вас есть два множества: А и В. Их пересечение представляет собой множество элементов, которые являются общими для А и для В.
Операция пересечения во множествах может быть достигнута как при помощи оператора & , так и метода intersection() . Рассмотрим пример:
print ( x & y ) # Результат: 3
В обеих множествах 3 является общим элементом. То же самое может быть достигнуто при использовании метода intersection() :
z = x . intersection ( y )
print ( z ) # Результат: 3
В следующем разделе мы обсудим, как определить разницу между множествами.
Разница между множествами
Предположим, у вас есть два множества: А и В. Разница между А и В (А — В) — это множество со всеми элементами, которые содержатся в А, но не в В. Соответственно, (В — А) — это множество со всеми элементами в В, но не в А.
Для определения разницы между множествами в Python, мы можем использовать как функцию difference(), так и оператор — . Рассмотрим пример:
diff_set = set_a . difference ( set_b )
print ( diff_set )
В показанном выше скрипте, только первые три элемента множества set_a отсутствуют во множестве set_b , формируя нашу выдачу. Оператор минус — можно также применить для нахождения разницы между двумя множествами, как показано ниже:
print ( set_a — set_b )
Симметричная разница между множествами А и В — это множество с элементами, которые находятся в А и В, за исключением тех элементов, которые являются общими для обеих множеств. Это определяется использованием метода Python под названием symmetric_difference() , или оператора ^ . Посмотрим на пример:
symm_diff = set_a . symmetric_difference ( set_b )
print ( symm_diff )
Симметричную разницу можно также найти следующим образом:
print ( set_a ^ set_b )
Сравнение множеств
Мы можем сравнить множества в зависимости от того, какие элементы в них содержатся. Таким образом, мы можем сказать, является ли множество родительским, или дочерним от другого множества. Результат такого сравнения будет либо True , либо False .
Чтобы проверить, является ли множество А дочерним от В, мы можем выполнить следующую операцию:
Чтобы узнать является ли множество В дочерним от А, мы можем выполнить следующую операцию, соответственно:
months_a = set ( [ «Jan» , «Feb» , «March» , «Apr» , «May» , «June» ] )
months_b = set ( [ «Jan» , «Feb» , «March» , «Apr» , «May» , «June» , «July» , «Aug» , «Sep» , «Oct» , «Nov» , «Dec» ] )
subset_check = months_a <= months_b
superset_check = months_b >= months_a
print ( subset_check )
print ( superset_check )
Дочернее и родительское множество может также быть проверено при помощи методов issubset() и issuperset() , как показано ниже:
months_a = set ( [ «Jan» , «Feb» , «March» , «Apr» , «May» , «June» ] )
months_b = set ( [ «Jan» , «Feb» , «March» , «Apr» , «May» , «June» , «July» , «Aug» , «Sep» , «Oct» , «Nov» , «Dec» ] )
subset_check = months_a . issubset ( months_b )
superset_check = months_b . issuperset ( months_a )
print ( subset_check )
print ( superset_check )
В следующем разделе мы обсудим некоторые из наиболее часто используемых методов для манипуляции множествами, предоставленных в Python, которые мы не успели упомянуть.
Методы множеств
Python содержит огромное количество встроенных методов, включая следующие:
Метод copy()
Этот метод возвращает копию множества. Например:
string_set = < "Nicholas" , "Michelle" , "John" , "Mercy" >
x = string_set . copy ( )
Выдача показывает, что х является копией множества string_set .
Метод isdisjoint()
Этот метод проверяет, является ли множество пересечением или нет. Если множества не содержат общих элементов, метод возвращает True , в противном случае — False . Например:
x = names_a . isdisjoint ( names_b )
Оба множества не имеют общих элементов, что делает выдачу True .
Метод len()
Этот метод возвращает длину множества, которая является общим количеством элементов во множестве. Пример:
print ( len ( names_a ) ) # Результат: 4
Выдача показывает, что длина множества является 4.
Frozenset в Python
Frozenset (замороженное множество) – это класс с характеристиками множества, однако, как только элементы становятся назначенными, их нельзя менять. Кортежи могут рассматриваться как неизменяемые списки, в то время как frozenset-ы — как неизменные множества.
Множества являются изменяемыми и нехешируемыми, это значит, что мы не можем использовать их как словарные ключи. Замороженные множества (frozenset) являются хешированными и могут использоваться в качестве ключей словаря.
Для создания замороженного множества, мы используем метод frozenset() . Давайте создадим два замороженных множества, Х и Y:
X = frozenset ( [ 1 , 2 , 3 , 4 , 5 , 6 ] )
Y = frozenset ( [ 4 , 5 , 6 , 7 , 8 , 9 ] )
Замороженные множества поддерживают использование множественных методов 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 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»
