Добавить в корзинуПозвонить
Найти в Дзене
Brainsburg Educational

Множества в Python

В прошлых уроках мы разобрали списки и кортежи — оба хранят данные в определённом порядке. Сегодня познакомимся с множеством — структурой, которая работает по совершенно другим правилам. Множество (set) — это неупорядоченный набор уникальных значений. Два ключевых слова здесь — «неупорядоченный» и «уникальных». Создаётся множество с помощью фигурных скобок {}: Вывод: Когда использовать множество, а не список или кортеж Главная задача множества — хранить только уникальные значения и гновенно отвечать на вопрос: «есть этот элемент или нет?». В отличие от списка, множество автоматически отбрасывает дубликаты при добавлении — вам не нужно писать для этого никакого дополнительного кода. Это особенно полезно в анализе данных, когда нужно, например, найти всех уникальных покупателей из длинного журнала транзакций, определить, какие клиенты совершили покупку и в январе, и в феврале, или выяснить, кто из клиентов не вернулся во второй месяц. Все эти задачи решаются в одну строку — с помощью о
Оглавление

В прошлых уроках мы разобрали списки и кортежи — оба хранят данные в определённом порядке. Сегодня познакомимся с множеством — структурой, которая работает по совершенно другим правилам.

1. Что такое множество и чем оно отличается от списка и кортежа

Множество (set) — это неупорядоченный набор уникальных значений. Два ключевых слова здесь — «неупорядоченный» и «уникальных».

  • Неупорядоченный — элементы не имеют фиксированного индекса. Нельзя сказать «дай мне первый элемент» или обратиться к данным через [0].
  • Уникальных — если добавить в множество одно и то же значение дважды, оно всё равно будет храниться только один раз.

Создаётся множество с помощью фигурных скобок {}:

-2

Вывод:

-3

Когда использовать множество, а не список или кортеж

-4

2. Для чего нужно множество в Python

Главная задача множества — хранить только уникальные значения и гновенно отвечать на вопрос: «есть этот элемент или нет?». В отличие от списка, множество автоматически отбрасывает дубликаты при добавлении — вам не нужно писать для этого никакого дополнительного кода.

Это особенно полезно в анализе данных, когда нужно, например, найти всех уникальных покупателей из длинного журнала транзакций, определить, какие клиенты совершили покупку и в январе, и в феврале, или выяснить, кто из клиентов не вернулся во второй месяц. Все эти задачи решаются в одну строку — с помощью операций объединения |, пересечения & и разности -, а именно

-5

💡 Порядок вывода элементов множества не гарантирован — Python не обязан сохранять тот порядок, в котором вы записали элементы. Каждый раз вывод может быть разным.

Обратите внимание:

-6

Вывод (порядок может отличаться):

-7

💡 Множество автоматически убирает дубликаты. Если список покупателей содержит повторяющиеся ID, множество оставит только уникальные:

Обратите внимание:

-8

Вывод:

-9

Три дубликата исчезли автоматически — без какого-либо дополнительного кода.

3. Какие данные можно хранить в множествах

Неизменяемые данные

Множество принимает данные, которые неизменяемы: числа, строки, кортежи. Списки и другие множества хранить внутри нельзя — Python выдаст ошибку.

-10

ОДНАКО, стоит только попробовать добавить во множество какой-то список

-11

или другое множество

-12

Получим на выводе:

-13

Числа и переменные, которые на них ссылаются

Пример 1. Прямые числа в множестве — уникальные
артикулы товаров. Для усложнения список артикулов с дубликатами задан
сначала в виде обычного списка, а далее - преобразуется в множество —
остаются только уникальные:

-14

Вывод:

-15

Пример 2. Кортеж из переменных, ссылающихся на номера регионов, преобразуется в множество:

-16

Вывод:

-17

Строки

Пример 1. Уникальные источники трафика в аналитике, заданные сначала в виде множества. Обратите внимание, что одна и та же переменная sources переопределяет саму себя. Так можно, а иногда даже и нужно делать:

-18

Вывод:

-19

ВАЖНО: дубликаты "organic" и "direct" были автоматически удалены.

Пример 2. Уникальные города, из которых поступили заказы. Аналогичная ситуация. Решили сначала объявить данные в виде списка:

-20

Вывод:

-21

4. Как проверить наличие элемента в множестве

Выше мы уже показали, что поскольку у множества нет индексов, обращаться к элементу через [i] нельзя. Зато множество отлично подходит для проверки «есть этот элемент или нет» — с помощью ключевого слова in.

Результат проверки сохраняется в переменную, которая принимает одно из двух значений: True (да, есть) или False (нет, отсутствует).

Пример 1. Проверяем, есть ли город Казань в наборе городов доставки:

-22

Вывод:

-23

Пример 2. Проверяем, есть ли артикул 9999 среди доступных товаров:

-24

Вывод:

-25

Пример 3. Проверяем, есть ли источник трафика «referral» в списке зафиксированных источников:

-26

Вывод:

-27

5. Операции над множествами — главная сила

Это то, чего нет у списков и кортежей. Множества
поддерживают математические операции: объединение, пересечение и
разность. Именно для этого они чаще всего и используются в анализе
данных.

Объединение — оператор |

Объединение возвращает все уникальные элементы из обоих множеств.

-28

Вывод:

-29

«Борис» встречался в обоих множествах, но в результате он один.

Пересечение — оператор &

Пересечение возвращает только те элементы, которые есть в обоих множествах одновременно.

-30

Вывод:

-31

Это список повторных покупателей — тех, кто купил и в январе, и в феврале.

Разность — оператор "-"

Разность возвращает элементы, которые есть в первом множестве, но отсутствуют во втором.

-32

Вывод:

-33

Это покупатели, которые были в январе, но не вернулись в феврале — ценная информация для маркетолога.

6. Как добавлять и удалять элементы множества

Множество можно изменять — добавлять и удалять элементы. Главное помнить: порядок при этом не гарантируется.

Добавить элемент — метод add()

-34

Удалить элемент — метод discard()

-35

Вывод:

-36

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

Итог

Множество — это инструмент для работы с уникальными данными. Оно
автоматически убирает дубликаты, позволяет быстро проверить наличие
элемента и мощно справляется с задачами пересечения и разности наборов
данных. Если перед вами стоит вопрос «сколько уникальных значений?» или
«кто есть и там, и там?» — множество ваш лучший выбор. Следующая тема —
словари, где каждому значению можно дать имя.