Множества и их методы

1. Что такое множества

  • Множество (set) — это неупорядоченная коллекция уникальных элементов.

  • frozenset — неизменяемое множество.

  • Элементы множества должны быть хешируемыми (числа, строки, кортежи).

s = {1, 2, 3, 3}  # дубликаты удаляются автоматически
print(s)  # {1, 2, 3}

fs = frozenset([1, 2, 3])

2. Основные методы множеств

Метод / Операция
Описание

add(elem)

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

remove(elem)

Удаляет элемент, если нет — KeyError

discard(elem)

Удаляет элемент, если есть, иначе ничего не делает

pop()

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

clear()

Очищает множество

copy()

Возвращает поверхностную копию

union() или |

|

intersection() или &

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

difference() или -

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

symmetric_difference() или ^

Симметричная разность (элементы, которые есть в одном, но не в обоих)

issubset()

Проверка, является ли множество подмножеством другого

issuperset()

Проверка, является ли множество надмножеством другого


3. Примеры использования

a = {1, 2, 3}
b = {3, 4, 5}

# Добавление
a.add(10)

# Удаление
a.discard(2)
# a.remove(100)  # KeyError, если элемента нет

# Операции над множествами
print(a | b)  # {1, 3, 4, 5, 10}  - объединение
print(a & b)  # {3}              - пересечение
print(a - b)  # {1, 10}          - разность
print(a ^ b)  # {1, 4, 5, 10}    - симметричная разность

# Проверка подмножества
print({1,3}.issubset(a))  # True

4. Применение в автотестах

  • Проверка уникальности элементов

ids = [1, 2, 3, 3, 4]
assert len(ids) != len(set(ids))  # есть дубликаты
  • Сравнение множеств данных из API

expected_fields = {"id", "name", "email"}
response_fields = set(response.json().keys())
assert expected_fields.issubset(response_fields)
  • Фильтрация и пересечение данных

actual_users = {"Alice", "Bob", "Carol"}
active_users = {"Bob", "Carol"}
assert actual_users & active_users == {"Bob", "Carol"}

💡 Вывод:

  • set = изменяемое множество уникальных элементов.

  • frozenset = неизменяемое множество.

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

Last updated

Was this helpful?