Множества

Множества

@ProgHelpBot
  1. Объявление
  2. Добавление элемента
  3. Удаление элемента
  4. Проверка наличия элемента
  5. Операции
  6. Методы и функции
  7. Frozenset

Объявление

Хранит только уникальные элементы без какой-либо последовательности.

Для создания применяются фигурные скобки {}, внутри которых через запятую перечисляются элементы множества. Пустое множество нельзя создать только с помощью фигурных скобок. Внутри обязательно должен быть какой-то элемент.

empty1 = set()  # пустое
empty2 = {''}  # пустое
people1 = {"Alex", "Bill", "Carl"}  # {'Alex', 'Bill', 'Carl'}
people2 = {"Alex", "Alex", "Bill", "Bill", "Carl", "Carl"}  # {'Alex', 'Bill', 'Carl'}

Для создания множества из другого набора элементов (строка, список, кортеж) также используется функция-конструктор set().

people1 = ["Alex", "Bill", "Carl"]
people2 = set(people2)

Для вывода элементов множества можно использовать функцию print(). Порядок выводимых элементов может отличаться.

people = {"Alex", "Bill", "Carl"}
print(people)  # {'Carl', 'Bill', 'Alex'}

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

Для добавления элемента используется метод add().

people = {"Alex", "Bill"}
people.add("Carl")

print(people)  # {'Carl', 'Alex', 'Bill'}

Удаление элемента

remove

Для удаления конкретного элемента используется метод remove(). Если такой элемент отсутствует, будет вызвано исключение.

people = {"Alex", "Bill", "Carl"}

people.remove("Carl")
print(people)  # {'Alex', 'Bill'}

people.remove("Dave")  # KeyError

discard

В отличие от remove, если такой элемент отсутствует, исключение не возникает.

people = {"Alex", "Bill", "Carl"}

people.discard("Carl")
print(people)  # {'Alex', 'Bill'}

people.discard("Dave")  # исключения не возникает

pop

Удаляет и возвращает случайный элемент множества.

people = {"Alex", "Bill", "Carl", "Dave"}

print(people.pop())  # Dave
print(people)  # {'Bill', 'Alex', 'Carl'}

print(people.pop())  # Bill
print(people)  # {'Alex', 'Carl'}

Проверка наличия элемента

Для проверки наличия элемента используется оператор in.

people = {"Alex", "Bill", "Carl"}
print("Alex" in people)  # True

Операции

Объединение

Синим - результат объединения

Для нахождения объединения двух множеств используется метод union() или оператор |.

a = {"Alex", "Bill", "Carl"}
b = {"Bill", "Carl", "Dave"}

c = a.union(b)
print(c)  # {'Carl', 'Dave', 'Bill', 'Alex'}

d = a | b
print(d)  # {'Carl', 'Dave', 'Bill', 'Alex'}

Для изменения исходного множества по объединению используется метод update() или оператор |=.

a = {"Alex", "Bill", "Carl"}
b = {"Bill", "Carl", "Dave"}

a.update(b)  # или a |= b
print(a)  # {'Carl', 'Dave', 'Bill', 'Alex'}

Пересечение

Синим - результат пересечения

Для нахождения пересечения двух множеств используется метод intersection() или оператор &.

a = {"Alex", "Bill", "Carl"}
b = {"Bill", "Carl", "Dave"}

c = a.intersection(b)
print(c)  # {'Carl', 'Bill'}

d = a & b
print(d)  # {'Carl', 'Bill'}

Для изменения исходного множества по пересечению используется метод intersection_update() или оператор &=.

a = {"Alex", "Bill", "Carl"}
b = {"Bill", "Carl", "Dave"}

a.intersection_update(b)  # или a &= b
print(a)  # {'Carl', 'Bill'}

Разность

Синим - результат разности первого и второго

Для нахождения разности двух множеств используется метод difference() или оператор -.

a = {"Alex", "Bill", "Carl"}
b = {"Bill", "Carl", "Dave"}

c = a.difference(b)
print(c)  # {'Alex'}

d = a - b
print(d)  # {'Alex'}

e = b - a
print(e)  # {'Dave'}

Для изменения исходного множества по разности используется метод difference_update() или оператор -=.

a = {"Alex", "Bill", "Carl"}
b = {"Bill", "Carl", "Dave"}

a.difference_update(b)  # или a -= b
print(a)  # {'Alex'}

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

Синим - результат симметрической разности

Для нахождения симметрической разности двух множеств используется метод symmetric_difference() или оператор ^.

a = {"Alex", "Bill", "Carl"}
b = {"Bill", "Carl", "Dave"}

c = a.symmetric_difference(b)
print(c)  # {'Dave', 'Alex'}

d = a ^ b
print(d)  # {'Dave', 'Alex'}

Для изменения исходного множества по разности используется метод symmetric_difference_update() или оператор ^=.

a = {"Alex", "Bill", "Carl"}
b = {"Bill", "Carl", "Dave"}

a.symmetric_difference_update(b)  # или a ^= b
print(a)  # {'Dave', 'Alex'}

Методы и функции

Наиболее важные методы для работы с множествами:

  • set.add(x) - добавляет элемент x в множество;
  • set.remove(x) - удаляет элемент x множества, имеющий значение x. Вызывает исключение, если такого элемента не существует;
  • set.discard(x) - удаляет элемент x множества, имеющий значение x. Не вызывает исключение, если такого элемента не существует;
  • set.pop() - удаляет и возвращает случайный элемент множества;
  • set.union() - возвращает объединение двух множеств. Той же функциональностью обладает оператор |;
  • set.update() - изменяет исходное множество по объединению. Той же функциональностью обладает оператор |=;
  • set.intersection() - возвращает пересечение двух множеств. Той же функциональностью обладает оператор &;
  • set.intersection_update() - изменяет исходное множество по пересечению. Той же функциональностью обладает оператор &=;
  • set.difference() - возвращает разность двух множеств. Той же функциональностью обладает оператор -;
  • set.difference_update() - изменяет исходное множество по разности. Той же функциональностью обладает оператор -=;
  • set.symmetric_difference() - возвращает симметрическую разность двух множеств. Той же функциональностью обладает оператор ^;
  • set.symmetric_difference_update() - изменяет исходное множество по симметрической разности. Той же функциональностью обладает оператор ^=;
  • set.isdisjoint(S) - возвращает False, если у множеств set и S есть общие элементы, иначе True;
  • set.issubset(S) - возвращает True, если все элементы множества set принадлежат множеству S, иначе False. Той же функциональностью обладает оператор <=. Отличие оператора < в том, что если множества равны, то он вернёт False;
  • set.issuperset(S) - возвращает True, если все элементы множество S принадлежат множеству set, иначе False. Операторы >= и > имеют аналогичные функции операторам <= и <;
  • set.copy() - возвращает копию множества.

Наиболее важные функции для работы с множествами:

  • len(set) - возвращает длину множества;
  • sorted(list, key=func) - возвращает отсортированный список на основе функции func (по умолчанию по возрастанию), не меняя множества.

Frozenset

Представляет вид множеств, которое не может быть изменено. Для создания используется функция frozenset() (по аналогии с функцией set()).

people1 = ["Alex", "Bill", "Carl"]
people2 = frozenset(people2)

Поддерживает те же операции, что и обычное множество, кроме тех, которые изменяют само множество.


← Диапазоны

→ Строки

Report Page