Множества на языке Python

Множества в Питон – это структура данных, содержащих неупорядоченные элементы. Также элементы не являются индексированными. Множество, как и список, предоставляет возможность внесение и удаления элементов. Но есть много и других характеристик, определяющих и отделяющих множества от других структур данных.

Например:

  1. Множество не включает дубликаты элементов.
  2. Элементы множества неизменные, но множество само по себе изменяемо, и его можно менять.
  3. Поскольку элементы не индексируются, множества не поддерживают операций среда и индексирования.

Дальше мы рассмотрим основные операции, которые могут быть использованы на множествах в Python.

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

Создать объект set в Python можно одним из способов:

  1. Применив фигурные скобки {}
  2. Применив встроенную функцию set()

В качестве имен для множеств не стоит использовать название встроенных классов или зарезервированные ключевые слова. Множество создается при размещении всех элементов внутри {}.

Взгляните на пример:

s1 ={}# Это создаст пустое множество
s2 ={1,’pythonru’,20.67}

Еще один способ определить (или создать) множество Python — использовать функцию set(). Смотрите пример:

s1 =set()# Это создаст пустое множество
s2 =set({1,’pythonru’,20.67})

Первый способ ({}) определенно проще. В объекте set нет ограничений на кол-во элементов, но запрещено добавлять элементы изменяемых типов, такие как словарь или список. Если попробовать добавить список, интерпретатор выдаст ошибку:

s5 ={1,2,3,[5,6,7,8]}
Traceback (most recent call last):
File «<stdin>», line 1,in<module>
TypeError: unhashable type:’list’

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

Объекты set в Питон поддерживают добавление элементов двумя способами:

  1. По одному с помощью метода add().
  2. Группами с помощью update().

Добавление одного элемента в множество Python

Один элемент можно добавить, прибегнув к методу add(). Пример:

set1 ={1,3,4}
set1.add(2)
print(set1)
{1,2,3,4}

Добавление нескольких элементов в множество Python

Больше одного элемента добавляется с помощью метода update(). Пример:

set2 ={1,2,3}
set2.update([4,5,6])
print(set2)# {1, 2, 3, 4, 5, 6}

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

Элементы (один или несколько) можно удалить из объекта set с помощью таких методов:

  1. remove()
  2. discard()
  3. pop()

remove()

Метод remove() полезен тогда, когда необходимо удалить из множества конкретный элемент и вернуть ошибку (если его нет в объекте). Пример метода remove():

set1 ={1,2,3,4,’a’,’p’}
set1.remove(2)
print(set1)
{1,3,4,’a’,’p’}

set1.remove(5)
# Error element not found

discard()

Метод discard() полезен, так как он удаляет конкретный элемент и не возвращает ошибку, если он не был обнаружен во множестве:

set1 ={1,3,4,’a’,’p’}
set1.discard(‘a’)
print(set1)
# {1, 3, 4 ‘p’}

set1.discard(6)
print(set1)
# {1, 3, 4, ‘p’}

pop()

Метод pop() удаляет по одному элементу за раз в рандомном порядке. Set — это неупорядоченная коллекция, соответственно pop() не требует аргументов.

set1 ={1,3,4, “p”}
set1.pop()
3# случайный элемент будет удален (ваш результат может отличаться)

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

Объекты set содержат несколько встроенных методов, которые можно увидеть с помощью таких команд, как dir(). dir(object).

Пример функции для объекта set в Питон:

set1 ={1,2,3,4}

dir(set1)
[‘__and__’,’__class__’,’__contains__’,’__delattr__’,’__dir__’,’__doc__’,’__eq__’,’__format__’,’__ge__’,’__getattribute__’,’__gt__’,’__hash__’,’__iand__’,’__init__’,’__init_subclass__’,’__ior__’,’__isub__’,’__iter__’,’__ixor__’,’__le__’,’__len__’,’__lt__’,’__ne__’,’__new__’,’__or__’,’__rand__’,’__reduce__’,’__reduce_ex__’,’__repr__’,’__ror__’,’__rsub__’,’__rxor__’,’__setattr__’,’__sizeof__’,’__str__’,’__sub__’,’__subclasshook__’,’__xor__’,’add’,’clear’,’copy’,’difference’,’difference_update’,’discard’,’intersection’,’intersection_update’,’isdisjoint’,’issubset’,’issuperset’,’pop’,’remove’,’symmetric_difference’,’symmetric_difference_update’,’union’,’update’]

Часто используемые функции множеств Python

Из всех методов в dir(), только несколько из них применяются постоянно: add, update, remove, pop и discard.

Функция принадлежности (членства)

Она проверяет на наличие определенного элемента в множестве:

num_set ={1,3,5,7,9,10}
7in num_set
# True

2in num_set
# False

1notin num_set
# False

Разные функции

  • len(num_set) — вернет количество элементов в объекте set.
  • copy() — создает копию уже существующего множества и сохраняет ее в новом объекте.
  • new_set = num_set.copy()
  • clear() — очищает множество (удаляет все элементы за один раз)
  • del — удаляет множество целиком

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

Дальше вы узнаете о различных операциях над множествами, которые представляют часть теории множеств.

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

При использовании на 2-х множествах вы получаете новый объект, включающий элементы обоих (без повторов). Операция объединения в Питон выполняется 2 способам: с помощью символа | или метода union().

A ={1,2,3}
B ={2,3,4,5}
C = A | B # используя символьный метод
C = A.union(B)# используя метод union
print(C)
# {1, 2, 3, 4, 5}

Пересечение множеств

При использовании на 2-х множествах вы получаете новый объект, содержащий общие элементы обоих. Операция пересечения может выполняться одним из способов: с помощью символа & или метода

intersection().
A ={1,2,3,4}
B ={3,4,5,6}
C = A & B # используя символьный метод
C = A.intersection(B)# используя метод intersection
print(C)
# {3,4}

Разность множеств

При использовании на двух множествах вы получаете новый объект, включающий элементы, которые есть в первом, но не втором (в нашем случае — в множестве “A”). Операция разности осуществляется двумя способами: с помощью символа — или метода difference().

A ={1,2,3,4}
B ={3,4,5,6}
C = A — B # используя символьный метод
C = A.difference(B)# используя метод difference
print(C)
# {1,2}

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

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

C = A ^ B # используя символьный метод
C = A.symmetric_difference(B)# используя метод symmetric_difference
print(C)
# {1, 2, 5, 6}

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

Множество B (SetB) называется подмножество A (SetA), если все элементы SetB есть в SetA. Проверить на подмножество в Python можно одним из способов: с помощью символа <= или метода issubset(). В зависимости от результата он возвращает True или False.

A ={1,2,3,4,5}
B ={2,3,4}
B <= A # используя символьный метод
B.issubset(A)# используя метод issubset
# True

Множество A (SetA) называется надмножество B (SetB), если все элементы SetB есть в SetA. Проверить на надмножество в Python можно следующими способами: с помощью символа >= или метода issuperset(). В зависимости от результата он возвращает True или False.

A ={1,2,3,4,5}
B ={2,3,4}
A >= B # используя символьный метод
A.issuperset(B)# используя метод issubset
# True

Выводы

Вы познакомились с объектами set в Python и теорией множеств на практике, имеете представление как создавать множества, менять их, удаляя или добавляя элементы. Также вы научились использовать метод dir и другие методы для множеств в Python и открыли для себя такие операции как union, intersection, difference, symmetric difference, subset и superset.

 

Добавить комментарий

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