Операции над двумя множествами питон

Множества в Python

Множество — неупорядоченный набор элементов. Каждый элемент в множестве уникален (т. е. повторяющихся элементов нет) и неизменяем.

Само по себе множество можно изменять, то есть удалять или добавлять элементы.

Множества удобно использовать для выполнения математических операций: объединение, пересечение, симметрическая разность и т. д.

Как создать множество

Множество объявляется так: элементы помещаются в фигурные скобки <> и разделяются запятыми. Сделать это можно и с помощью встроенной функции set() .

Внутри множества может быть любое количество элементов любого типа (целые числа, числа с плавающей точкой, кортежи, строки и т. д.). Внутрь множества нельзя помещать элементы изменяемых типов: списки, другие множества или словари.

# Разные виды множеств # Множество с целыми числами my_set = print(my_set) # Множество с разными типами данных my_set = print(my_set)
# Внутри множества не может быть одинаковых элементов # Вывод: my_set = print(my_set) # Аргументом функции set() может быть список # Вывод: my_set = set([1, 2, 3, 2]) print(my_set) # Внутри множества не может быть изменяемых объектов # В этом множестве [3, 4] — изменяемый список # Поэтому следующая строка вызовет ошибку my_set =


Traceback (most recent call last):
File "", line 15, in
my_set =
TypeError: unhashable type: 'list'

Создание пустого множество — дело хитрое.

Пустые фигурные скобки <> — это словарь. Чтобы объявить пустое множество, нужно использовать функцию set() без аргументов.

# Обратим внимание на объявление пустого множества # Объявление с помощью <> a = <> # Проверка типа a print(type(a)) # Объявление с помощью set() a = set() # Проверка типа a print(type(a))

Как изменять множество

Множества изменяемы и не упорядочены. Поэтому в индексации нет никакого смысла.

Читайте также:  This that self javascript

Так что получить доступ к элементам с помощью индексов или срезов не получится. Множества просто не поддерживают эти операции.

Чтобы добавить один элемент, нужно использовать метод add() . Если нужно добавить несколько элементов — метод update() . Метод update() принимает в качестве аргументов кортежи, списки или другие множества. Во всех случаях следует избегать одинаковых элементов.

# создаем my_set my_set = print(my_set) # вызов my_set[0] приведет к ошибке # TypeError: 'set' object does not support indexing # добавляем элемент # Вывод: my_set.add(2) print(my_set) # добавляем несколько элементов # Вывод: my_set.update([2, 3, 4]) print(my_set) # добавляем список и множество # Вывод: my_set.update([4, 5], ) print(my_set)

Как удалять элементы из множества

Определенный элемент множества можно удалить с помощью методов discard() и remove() .

Разница между ними вот в чем. Если элемент, который вы хотите удалить с помощью discard() , отсутствует в множестве — оно не изменится. А вот remove() вызовет ошибку, если элемента нет в множестве.

# разница между discard() и remove() # создаем my_set my_set = print(my_set) # удаление элемента # с помощью discard # Вывод: my_set.discard(4) print(my_set) # удаление элемента # с помощью remove # Вывод: my_set.remove(6) print(my_set) # удаление элемента, # отсутствующего в my_set, # с помощью discard # Вывод: my_set.discard(2) print(my_set) # При удалении элемента, # отсутствующего в my_set, # с помощью remove # вы получите ошибку. # Вывод: KeyError my_set.remove(2)




Traceback (most recent call last):
File "", line 28, in
KeyError: 2

Удалить и вернуть элемент мы можем с помощью метода pop() .

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

Удалить все элементы из множества можно с помощью метода clear() .

# cоздаем my_set # Вывод: множество уникальных элементов my_set = set("Приветмир") print(my_set) # pop элемента # Вывод: случайный элемент print(my_set.pop()) # pop еще одного элемента my_set.pop() print(my_set) # очищаем my_set # Вывод: set() my_set.clear() print(my_set)

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

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

Рассмотрим два множества и проведем с ними разные операции.

Объединение

Результат бъединения A и B — множество, содержащее в себе все элементы множеств A и B.

Операцию объединения можно произвести двумя способами: с помощью оператора | и метода union() .

# Операция объединения двух множеств # Создаем множества A и B A = B = # Используем оператор | # Вывод: print(A | B)

Попробуйте ввести следующие примеры в консоль:

# используем функцию union >>> A.union(B) # используем функцию union с B >>> B.union(A)

Пересечение

Результат пересечения A и B — множество, которому принадлежат те и только те элементы, которые одновременно принадлежат всем данным множествам

Операцию объединения можно произвести двумя способами: с помощью оператора & и метода intersection() .

# Пересечение множеств # Создаем множества A и B A = B = # Используем оператор & # Вывод: print(A & B)

Попробуйте ввести следующие примеры в консоль:

# использование метода intersection с A >>> A.intersection(B) # использование метода intersection с B >>> B.intersection(A)

Разность

Результат разности множеств B и A — множество элементов, содержащихся только в A. Следовательно, B-A = множество элементов, содержащихся только в B.

Операцию объединения можно произвести двумя способами: с помощью оператора — и метода difference() .

# Разность двух множеств # Создаем множества A и B A = B = # Используем оператор - с A # Вывод: print(A - B)

Попробуйте ввести следующие примеры в консоль:

# Использование функции difference с A >>> A.difference(B) # Использование оператора - с B >>> B - A # Использование функции difference с B >>> B.difference(A)

Симметрическая разность

Результат симметрической разности множеств A и B — множество элементов, содержащихся и в A, и в B, но не в обоих сразу. Иначе говоря, исключается только пересечение множеств.

Операцию объединения можно произвести двумя способами: с помощью оператора ^ и метода symmetric_difference() .

# Симметрическая разность множеств A и B # Создаем множества A и B A = B = # Используем оператор ^ # Вывод: print(A ^ B)

Попробуйте ввести следующие примеры в консоль:

# Использование функции symmetric_difference с A >>> A.symmetric_difference(B) # Использование функции symmetric_difference с B >>> B.symmetric_difference(A)

Методы множеств

У множеств много методов, некоторые мы уже обсудили выше. Вот полный список методов объекта set :

Добавляет элемент в множество

Удаляет все элементы из множества

Возвращает копию множества

Возвращает новое множество — разность двух или более множеств

Удаляет все элементы одного набора из другого

Удаляет элемент, если он содержится в множестве (если элемента в множестве нет, то ничего не происходит)

Возвращает новое множество — пересечение двух множеств

Добавляет в множество пересечение с другим множеством или с самим собой

Возвращает True , если два множества не имеют пересечения

Возвращает True , если определенное множество содержится в другом множестве

Возвращает True , если в множестве есть другое множество

Удаляет и возвращает случайный элемент множества. Если множество пусто, то возвращает ошибку KeyError

Удаляет определенный элемент множества. Если элемент отсутствует в множестве, то возвращает ошибку KeyError

Возвращает новое множество — симметрическую разность двух множеств

Добавляет в множество симметрическую разницу с другим множеством или с самим собой

Возвращает новое множество — объединение множеств

Добавляет в множество объединение с другим множеством или с самим собой

Несколько операций со множествами

Проверка на вхождение

Мы можем проверить, есть ли элемент в множестве. Сделать это можно с помощью ключевого слова in .

# Использование ключевого слова in # Создаем множество my_set my_set = set("яблоко") # Проверяем, есть ли 'о' в множестве # Вывод: True print('о' in my_set) # Проверяем, отсутствует ли 'к' в множестве # Output: False print('к' not in my_set)

Итерирование по множеству

Множество можно перебрать с помощью цикла for .

for letter in set("яблоко"): print(letter) 

Встроенные функции множеств

Возвращает True , если все элементы множества истинны или множество пустое

Возвращает True , если хоть один элемент множества истинен. Если множество пустое, возвращает False

Возвращает перечисляемый объект. В нем в виде пар содержатся значения и индексы всех элементов множества

Возвращает длину (количество элементов) множества

Возвращает наибольший элемент множества

Возвращает наименьший элемент множества

Возвращает отсортированный список, в котором находятся элементы множества (само множество не сортируется)

Возвращает сумму всех элементов множества

Frozenset

Frozenset — класс, имеющий характеристики множества. Отличие состоит в том, что frozenset после объявления неизменяем.

Кортеж — неизменяемый список, frozenset — неизменяемое множество.

Множества изменяемы, поэтому не могут использоваться в качестве ключей словаря. Frozenset же неизменяемы — их можно использовать в качестве ключей словаря.

Этот тип данных поддерживает следующие методы: copy() , difference() , intersection() , isdisjoint() , issubset() , issuperset() , symmetric_difference() и union() . Так как он неизменяем, методы add() и remove() с ним не работают.

# Frozenset # Создаем множества A и B A = frozenset([1, 2, 3, 4]) B = frozenset([3, 4, 5, 6])

Попробуйте ввести следующие примеры в консоль:

>>> A.isdisjoint(B) False >>> A.difference(B) frozenset() >>> A | B frozenset() >>> A.add(3) . AttributeError: 'frozenset' object has no attribute 'add' ```

Источник

Оцените статью