Python. Классы set, frozenset. Функции для работы с множествами. Назначение, примеры использования




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


Содержание


Поиск на других ресурсах:

1. Назначение классов set, frozenset

Класс set используется для создания и обработки изменяемых (mutable) множеств. Класс frozenset предназначен для создания неизменяемых (immutable) или хешированных (hashable) множеств.

В классах set, frozenset реализованы операции и функции для работы с множествами. Эти операции и функции есть стандартными и для их использования не нужно подключать дополнительные модули.

Все функции можно разбить на следующие категории:

  • функции, определяющие характеристики одного или нескольких множеств (например, функция len() и прочие);
  • функции, которые образовывают новое множество путем выполнения некоторой операции над другими множествами (например, функции union(), intersection() и прочие);
  • функции, которые определяют особенности в нескольких множествах (например, функции issubset(), issuperset() и прочие);
  • функции, которые изменяют текущее множество (например, функции add(), update(), intersection_update() и прочие).

 

2. Функция len(). Количество элементов в множестве

Функция len() возвращает количество элементов в множестве (мощность множества). Общая форма описания функции

k = len(s)

где

  • s – некоторое множество;
  • k – количество элементов в множестве s.

Пример.

# Множества
# Функция len

x = { 1, 3, 'abcd', 2.85 }
length = len(x) # length = 4 - количество элементов в множестве

# пустое множество
length = len({}) # length = 0 - пустое множество

 

3. Функция isdisjoint(). Определение наличия (отсутствия) общих элементов в множествах

Функция isdisjoint() возвращает True, если данное множество не имеет общих элементов с другим. Согласно документации Python общая форма вызова функции следующая

set.isdisjoint(other)

где

  • set – некоторое множество (экземпляр класса set);
  • other – множество, с которым сравнивается множество set.

Пример.

# Множества
# Функция isdisjont()

# множества имеют общие элементы
x = { 1, 3, 'abcd', 2.85 }
y = { 2, -4, 1 }
f = x.isdisjoint(y) # f = False - общий элемент 1

# множества не имеют общих элементов
x = { 2, 3, 4 }
y = { 7 }
f = x.isdisjoint(y) # f = True
f = y.isdisjoint(x) # f = True

# можно и так
f = { 'a', 'b', 'f' }.isdisjoint({ 'c', 'z' }) # f = True

 

4. Функция union(). Объединение множеств

Функция union() используется для объединения множеств. Общая форма вызова функции следующая

union_set = set.union(other)

где

  • set, other – объединяемые множества;
  • union_set – результируещее множество.

Функция возвращает объединенное множество. Вызов данной функции можно заменить операцией объединения множеств |.

Пример.

# Множества
# Функция union() - объединение множеств

x = { 1.25, -12.232 }
y = { -3.88, 2.66 }
z = x.union(y) # z = { 1.25, -12.232, -3.88, 2.66 }
v = y.union(x) # v = { 1.25, 2.66, -3.88, -12.232 }

z = {2, 3}.union({3, 5}.union({7, 9})) # z = {2, 3, 5, 7, 9}


 

5. Функция intersection(). Пересечение множеств

Функция intersection() реализует так называемое «пересечение множеств». При пересечении множеств, получается новое множество, которое содержит общие для двух множеств элементы.

Согласно документации Python общая форма функции следующая

intersection_set = set.intersection(*others)

где

  • set – текущее множество;
  • *others – одно или более множеств. Функция intersection() возвращает новосозданное множество, которое есть результатом пересечения множества set и множества (множеств) others;
  •  intersection_set – результирующее множество.

В программе функция также может быть заменена операцией &.

Пример.

# Множества
# Функция intersection() - пересечение множеств

# пересечение 2-х множеств
x = { 2, 4, 6, 8 }
y = { 2, 8 }
z = x.intersection(y) # z = {8, 2}

# пересечение 4-х множеств
x1 = { 1, 2, 4, 5, 7, 9 }
x2 = { 1, 2, 3, 5, 4, 2, 8 }
x3 = { 1, 3, 4, 5, 7, 9 }
x4 = { 1, 2, 3, 4, 8, 9 }
z = x1.intersection(x2,x3,x4) # z = {1,4}

 

6. Функция difference(). Разность множеств

Функция difference() реализует разность множеств. Общая форма использования функции следующая

difference_set = set.difference(*others)

где

  • set – множество элементов от которой нужно отнять множество (или множества) others;
  • others – некоторое множество или несколько множеств, разделенных запятой;
  • difference_set – результирующее множество.

Функция difference() может быть заменена операцией (минус).

Пример.

# Множества
# Функция difference() - разность множеств

# разность 2-х множеств
x = { 2, 4, 6, 8 }
y = { 2, 8 }
z = x.difference(y) # z = {4, 6}
v = y.difference(x) # v = {}

# разность 3-х множеств
x = { 1, 2, 3, 4, 5, 6 }
y = { 3, 5 }
z = { 2, 4, 5 }
v = x.difference(y,z) # v = {1, 6}

 

7. Функция symmetric_difference(). Симметричная разность

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

symm_differ_set = set.symmetric_difference(other)

где

  • set, other – рассматриваемые множества;
  • symm_differ_set – результирующее множество.

Функция возвращает новое множество, которое не содержит элементов, общих для обоих множеств set и other. Данная функция может быть заменена оператором симметричной разности .

Пример.

# Множества
# Функция symmetric_difference()

x = { 1, 2, 3, 4, 5 }
y = { 1, 3, 5 }
z = x.symmetric_difference(y) # z = {2, 4}

 

8. Функция copy(). Копия множества

Функция copy() выполняет копирование множеств. Функция не получает параметров. Функция возвращает копию множества. Общая форма функции

copy_set = set.copy()

где

  • set – текущее множество, из которого нужно сделать копию;
  • copy_set – результирующее множество-копия.

Пример.

# Множества
# Функция copy() - копия из множества

x = { 1, 3, 8 }
y = x.copy() # y = { 8, 1, 3 }

z = { 5, 6, 7 }.copy() # z = { 5, 6, 7 }

 

9. Функция update(). Обновление множества с помощью операции добавления

Функция update() обновляет множество, добавляя к ней новые элементы. Общая форма использования функции следующая

set.update(*others)

где

  • set – множество, которое нужно обновить;
  • others – множество или несколько множеств, которые добавляются к множеству set.

Функция обновляет текущее множество, поэтому не вызывается в правой части оператора присваивания.

Данная функция выполняет операцию |= над множествами.

Пример.

# Множества
# Функция update()

# 1. Добавить одно множество
x = { 5, 6 }
x.update({2, 8, 10}) # добавить к множеству x элементы 2, 8, 10

# 2. Добавить одно и более множеств
x = { 7 }
y = { 1, 5, 9 }
x.update(y) # x = {1, 9, 5, 7}
x.update({15}, {2}, {'abc'}) # x = {1, 2, 'abc', 5, 7, 9, 15}

 

10. Функция intersection_update(). Обновление множества с помощью операции пересечения

Функция intersection_update() выполняет обновление текущего множества с помощью пересечения множеств. Общая форма использования функции следующая

set.intersection_update(*others)

где

  • set – множество которое обновляется;
  • others – одна или несколько множеств, которые нужно обновить с помощью операции пересечения.

Данная функция выполняет операцию &= над множествами.

Пример.

# Множества
# Функция intersection_update()

# Обновление текущего множества с помощью пересечения
x = { 1, 2, 3, 4, 5, 6, 7 }
x.intersection_update({3,4,5})

# Случай с несколькими множествами
x = { 1, 2, 3, 4, 5, 6, 7 }
x.intersection_update({5,6,7,8}, {1,2,6,8}) # x = {6}

 

11. Функция difference_update(). Предназначена для получения разности множеств

Функция difference_update() реализует обновление множества с помощью операции вычитания множеств. Общая форма использования функции

set.difference_update(*others)

где

  • set – множество, которое обновляется;
  • others – одно или несколько множеств, которые последовательно вычитаются из множества set.

Функция difference_update() может быть заменена одной или несколькими операциями (вычитание множеств). Функция заменяет операцию –=.

Пример.

# Множества
# Функция difference_update()

# Обновление текущего множества с помощью вычитания
x = { 1, 2, 3, 4, 5, 6, 7, 8, 9}
y = { 2, 4, 6, 8 }
x.difference_update(y) # x = {1, 3, 5, 7, 9}

# Вычитание нескольких множеств
x = set('abcdef') # x = {'a', 'c', 'b', 'e', 'd', 'f'}
x.difference_update({'c'}, {'d'}, {'c','e'}) # x = {'a','b','f'}

 

12. Функция add(). Добавить элемент к множеству

Функция add() предназначена для добавления элемента к множеству. Общая форма использования функции следующая

set.add(elem)

здесь set – множество, к которому добавляется элемент elem. Элемент может быть любого простого типа.

Пример.

# Множества
# Функция add() - добавление элемента к множеству

# сформировать множество целых чисел в цикле с помощью add()
n = int(input("Enter number:"))

i=1
x = set([]) # x = { } - сначала пустое множество
while i<=n:
    x.add(i) # вызов функции add()
    i=i+1

# Вывести x
print('x = ', x)

# Добавление элементов разных типов
y = set([])
y.add(5) # целое число
y.add(8.76) # вещественное число
y.add('abc') # строка или символ
y.add(False) # логический тип

Результат выполнения программы

Enter number:5
x = {1, 2, 3, 4, 5]}
y = {False, 8.76, 'abc', 5]}

 

13. Функция remove(). Удаление элемента из множества

Функция remove() удаляет элемент из множества. Общая форма объявления функции

set.remove(elem)

здесь set – множество, из которого нужно удалить элемент elem.

Если при вызове функции элемент elem не помещается в множестве, то вызывается исключение KeyError, которое выглядит приблизительно так

KeyError: elem

Пример.

# Множества
# Функция remove() - удаление элемента из множества

x = {1,2,3,4,5}
x.remove(3) # x = {1, 2, 4, 5}
x.remove(4) # x = {1, 2, 5}

 

14. Функция discard(). Удаление элемента из множества без генерирования исключения

Функция discard() удаляет элемент из множества, если элемент есть в этом множестве. Общая форма использования функции следующая

set.discard(elem)

здесь set – множество, из которого удаляется элемент elem. В отличие от функции remove(), данная функция не генерирует ошибку в случае, когда элемент elem отсутствует в множестве set.

Пример.

# Множества
# Функция discard() - удаление элемента из множества

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

x.discard(3) # x = {1,2,4,5}
x.discard(9) # x = {1,2,4,5}
x.discard(1) # x = {2,4,5}

 

15. Функция pop(). Вытянуть случайный элемент из множества

Функция pop() вытягивает элемент из множества. Функция возвращает извлеченный элемент. Общая форма использования функции

elem = set.pop()

здесь set – непустое множество, из которого вытягивается элемент elem. После вытягивания множество set не содержит элемента elem.

Если множество есть пустым, то генерируется исключение KeyError. Это исключение вызывается, если не найден ключ в множестве.

Пример.

# Множества
# Функция pop() - вытягивание элемента из множества

x = {1,2,3,4,5,6,7,8,9}

elem = x.pop()
print('elem = ', elem)
print('x = ', x)

Результат выполнения программы

elem = 1
x = {2, 3, 4, 5, 6, 7, 8, 9}

 

16. Функция clear(). Удалить все элементы из множества

Функция clear() удаляет все элементы из множества. Общая форма использования функции следующая

set.clear()

здесь set – множество, из которого удаляются элементы.

Пример.

# Множества
# Функция clear()

x = set('BestProg') # создать множество
print('x = ', x) # вывести его на экран

x.clear() # очистить множество
print('x = ', x)

Результат выполнения программы

x = {'B', 'e', 'g', 'o', 'P', 's', 'r', 't'}
x = { }

 


Связанные темы