Документация по Python. Теоретические материалы, и практические задачи

Множества в Python

Сегодня мы с вами разберемся, что из себя представляют множества, как они создаются, добавление, удаление элементов из них. Какие операции можно выполнять над множествами в Python.

И так, множества  — это неупорядоченная коллекция. Все элементы внутри множества, обязательно должны быть уникальными. Однако само множество является изменяемым, python позволяет нам удалять, или добавлять элементы. Так же, со множествами мы можем производить математические операции, объединение, пересечение множеств, и.т.д.

Создание множества в Python

Создание множеств ничем особо не отличается от остальных видов последовательностей. Мы размещаем неизменяемые объекты внутри фигурных скобок { }, разделенных запятыми, или можно воспользоваться стандартной встроенной функцией set (). Множества в python может иметь неограниченное количество элементов, они могут иметь разный тип данных. Но, множества не сможет содержать, изменяемый тип данных, типа словаря, или списка.


set1 = {1,2,3}

set2 ={2.0,"Pydocs", (1,2,3)}

print(set1)

print(set2)

Результат:

{1,2,3}

(2.0,(1,2,3), "Pydocs")

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


a ={} #Если мы попытаемся создать набор таким образом, то в результате получим словарь

b = set() # А вот так, получим пустое множество

То есть, для создания пустого множества, достаточно воспользоваться стандартной функцией.

Изменение множества в Python

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


set1 = {1,3}

set1.add(2)

set1.update([2,3,4])

set1.update([4,5],{1,6,8})

print(set1)

Результат:

{1,2,3,4,5,6,8}

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

Для удаление из множества, мы можем воспользоваться методами discard(), и remove(). У этих двух методов конечно же есть различия. Метод discard(), оставит набор неизменным, если искомый элемент отсутствует в наборе. Метод remove(), вызовет ошибку если нет искомого элемента.


my_set = {1,3,4,5,6}

my_set.discard(4)

print(my_set)

my_set.remove(6)

print(my_set)

my_set.discard(2) # Несуществующий элемент

print(my_set)

my_set.remove(2) # Несуществующий элемент

print(my_set)

Результат:

{1,3,4,5,6}

{1,3,5,6}

{1,3,5}

{1,3,5}

KeyError: 2

Математические операции

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

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


A = {1,2,3,4,5}

B = {4,5,6,7,8}

Объединение множеств

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


A = {1,2,3,4,5}

B = {4,5,6,7,8}

print(A | B)

A.union(B)

print(A)

Результат:

{1,2,3,4,5,6,7,8}

{1,2,3,4,5,6,7,8}

Найти пересечение множеств

Пересечение двух множеств  — это поиск общих элементов. Найти пересечение можно с помощью оператора &, или с помощью метода intersection().


A = {1,2,3,4,5}

B = {4,5,6,7,8}

print(A & B)

A.intersection(B)

Результат:

{4,5}

{4,5}

Нахождение разницы между множествами

Разность множеств — это элементы А не содержащиеся в элементах множества В. Для этого можно воспользоваться оператором , или методом difference().


A.difference(B)

B -A

Результат:

{1,2,3}

{8,6,7}

Дополнительные методы для работы со множествами

МетодОписание метода
add() Добавляет элемент в набор
clear()Очистить набор
copy()Копирование множества
difference()Возвращает разность двух или более множества в качестве нового множества
difference_update()Удаляет все элементы другого множества из этого множества
discard()Удаляет элемент из множества, если он является членом. (Ничего не делайте, если элемент не находится во множестве)
intersection()Возвращает пересечение двух множеств как новое множество
intersection_update()Обновляет множество пересечением самого себя и другого
isdisjoint()ВОЗВРАТ True если два множества имеют нулевое пересечение
issubset()ВОЗВРАТ True если другой набор содержит этот набор
issuperset()ВОЗВРАТ True если этот набор содержит другой набор
pop()Удаляет и возвращает произвольный элемент набора. Повышения KeyError если набор пуст
remove()Удаляет элемент из набора. Если элемент не является членом, KeyError
symmetric_difference()Возвращает симметричную разность двух наборов как новый набор
symmetric_difference_update()Обновляет множество с симметричной разностью самого себя и другого
union()Возвращает объединение множеств в новом наборе
update()Обновляет набор с объединением себя и других

Проверка на наличие элемента во множествах

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


my_set = set("apple")

print('a' in my_set)

print('p' not in mys_set)

Результат:

True

False

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

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


    for i in set("apple")

print(i)

Результат:

a

p

p

l

e

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

Множества так же имеют встроенные функции all(), any(), enumerate(), len(), max(), min(),sorted(), sum() и.т.д.

ФункцииОписание
all()ВОЗВРАТ True если все элементы множества истинны (или если множество пусто).
any()ВОЗВРАТ True если какой-либо элемент множества истинен. Если набор пуст, возвращается False.
enumerate()Возвращает объект enumerate. Он содержит индекс и значение для всех элементов набора как пары.
len()Возвращает длину (количество элементов) в наборе.
max()Возвращает самый большой элемент в наборе.
min()Возвращает наименьший элемент в наборе.
sortedВозвращает новый отсортированный список из элементов набора(не сортирует сам набор).
sum()Возвращает сумму всех элементов в наборе.

 

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *