Множества (set) в Python - гид для новичков

В мире программирования данные удобно организовывать в упорядоченные структуры. Одним из видов таких структур являются коллекции - они позволяют объединять однотипные значения и работать с ними как с единым целым.
В Python существует несколько видов коллекций, каждый из которых отвечает определенным целям. Среди них и множества - специальные наборы уникальных элементов.
Множества похожи на списки, но в отличие от них не допускают дубликатов. Благодаря этому свойству они отлично подходят для решения задач, где необходимо отслеживать уникальные значения. При этом, в отличие от кортежей, множества являются изменяемыми коллекциями - их можно дополнять, видоизменять и удалять элементы по мере необходимости.
В этом обзоре мы подробно рассмотрим множества в Python, их особенности, способы создания, добавления и удаления элементов, выполнения различных операций и использования в практических задачах. Вместе мы погрузимся в мир коллекций и узнаем, как эффективно применять множества для решения различных задач в программировании.
Инициализация собрания
Для создания собрания применяют различные методы, о которых мы поговорим позже. Сейчас рассмотрим самый простой способ – инициализация с помощью фигурных скобок.
После открывающей фигурной скобки перечисляются элементы собрания через запятую. Элементы могут быть любыми объектами, поддерживающими сопоставление.
При инициализации пустого собрания используется пустая пара фигурных скобок.
Элементы в собрании не упорядочены и могут повторяться. Однако при создании собрания система автоматически устраняет дубликаты, обеспечивая уникальность элементов.
Следующий пример демонстрирует инициализацию собрания с различными элементами:
set1 = {1, 2.5, 'слово', True}
Добавление элементов
Включить новые компоненты в коллекцию – несложная задача.
Чтобы прирастить содержимое, используйте метод add().
Ему в аргумент передают значение, которое хотите поместить внутрь.
Можно добавлять как строки, так и числа, главное чтобы их типы совпадали.
Если попытаетесь внести дубликат, то ничего не произойдёт – уникальность гарантируется.
Удаление элементов из набора
Удалить элемент из набора можно несколькими способами.
Попробуем удалить с помощью метода discard()
Используем метод discard(), если нам не важен результат удаления элемента.
Если такого элемента нет в наборе, метод не выдаст ошибку, а просто завершится.
Теперь удалим с помощью метода remove()
Используем метод remove(), если нам важно, что этот элемент удалится.
Если такого элемента нет в наборе, метод выдаст ошибку.
Существует еще один способ - оператор del
Используем оператор del, если нам необходимо удалить сам набор.
Таким образом, мы можем избавиться от определенных элементов или полностью очистить набор в Python.
Очистка от двойников
В жизни порой накапливается лишнее. Так и в списках данных: элементы могут повторяться без надобности.
Представьте себе корзину с фруктами, где попадаются одинаковые яблоки. Вам же нужен один экземпляр каждого фрукта.
То же и со списками. Избавиться от лишних копий элементов – значит сделать список более упорядоченным и компактным.
Инструмент фильтрации
Для удаления дубликатов есть специальная процедура – фильтрация. Это как просеивание песка через сито, только вместо песка и сита – список и фильтр.
Фильтр проверяет каждый элемент списка и пропускает только те, которых еще не было. Так все похожие элементы остаются на своеобразном сите, а в списке остаются лишь уникальные значения.
Практика фильтрации
Например, у вас есть список фруктов: ["Яблоко", "Банан", "Апельсин", "Яблоко", "Груша"]
.
Исходный список | Отфильтрованный список |
---|---|
["Яблоко", "Банан", "Апельсин", "Яблоко", "Груша"] | ["Яблоко", "Банан", "Апельсин", "Груша"] |
Это нехитрое действие поможет вам избавиться от лишних элементов и получить компактный, структурированный список данных.
Объединение коллекций
Представьте, что у вас есть две коробки, наполненные разными элементами. Вы хотите объединить их в одну большую коробку, которая будет содержать все элементы из обеих исходных коробок.
Это как раз и есть объединение коллекций!
Чтобы объединить коллекции, достаточно использовать оператор объединения (|) между их названиями.
Например, если у вас есть две коллекции A и B, то их объединение можно записать как C = A | B.
Результат объединения будет содержать все уникальные элементы из обеих исходных коллекций, а дубликаты будут удалены.
Пересечение коллекций
Иногда вам может понадобиться найти общие элементы в наборах.
Как грибы после дождя появляются новые термины!
Да что там...
Дождем сыпятся!
Для этого операций существует несколько способов.
Остановлюсь на пересечении.
Пересечением называется набор, состоящий из элементов, которые входят во все исходные наборы.
Или, если говорить скучным языком, общими элементами.
Обозначается как & (амперсанд).
Вот вам и причины для новых проблем!
Иногда она нужна, иногда нет.
Как всегда, выбор за вами!
Разница между наборами
Чтобы найти разность наборов, используем оператор ".difference()".
Команда ".difference()" возвращает новый набор, содержащий элементы, которые есть в первом наборе, но отсутствуют во втором.
Разность наборов может быть полезна для исключения дубликатов из объединенного набора или определения уникальных элементов в каждом наборе.
Например, если у нас есть набор цветов {"красный", "синий", "желтый"} и набор оттенков синего {"голубой", "синий", "индиго"}, то разностью этих наборов будет набор {"красный", "желтый"}.
Проверка принадлежности элемента совокупности
Чтобы узнать, входит ли элемент в состав группы, ее можно проверить.
Это просто, удобно и бывает необходимо.
Не надо долго мучиться, от этого не будет никакого вреда.
Так можно быстро получить ответ, что очень ценно.
Узнать это проще простого, достаточно воспользоваться оператором принадлежности "in".
Сравнение совокупностей
Сравнивая совокупности, вы можете получить представление об их сходствах и различиях.
Это полезно при сопоставлении данных, выявлении общих элементов.
Операторы сравнения
Всего существует два оператора сравнения: оператор равенства `==` и оператор неравенства `!=`.
Так, выражение `coll_1 == coll_2` вернёт `True`, если совокупности `coll_1` и `coll_2` имеют одинаковые элементы, иначе – `False`.
Результаты сравнения
Результатом сравнения будет логическое значение:
* `True` – если совокупности равны или имеют общие элементы
* `False` – если совокупности не равны или не имеют общих элементов
Пример
Рассмотрим совокупности `set_a = {1, 2, 3}` и `set_b = {2, 3, 4}`:
* `set_a == set_b` вернёт `False`, так как совокупности имеют разные элементы
* `set_a != set_b` вернёт `True`, подтверждая, что совокупности не равны
Превращаем списки в уникальные собрания
Предположим, у Вас имеется список с дубликатами. Из него нетрудно сотворить коллекцию элементов, не терпящую повторений.
Для этой цели существует несколько способов.
Первый вариант - самый простой:
Устроим молчаливую беседу с функцией set(list), и она мигом переделает список в изысканное множество без единого дубликата.
Второй способ - немного хитрее:
Мы можем усадить элементы из списка за один длинный стол. Потом в одно мгновение превратим сидящих в множество с помощью функции set(). И вуаля! - перед нами целое кодло уникальных элементов.
Превращаем набор в перечень
На любой из пройденных троп информатики обязательно встретится потребность переосмыслить последовательность неких элементов. Множество в Python тоже может пополнить копилку таких трансмутаций. Перечень, как упорядоченный конвой, сохраняет порядок прохождения, а это не лишнее свойство, когда речь идет о воспроизведении последовательности событий.
И как же сотворить этот перечень из сплоченного коллектива множества? Процесс прост: обратимся к функции list(). Эта самая функция может по щелчку пальцев преобразовать любой набор элементов в их линейный порядок.
Используйте код ниже, чтобы увидеть чудо перевоплощения:
Пример
python
a = set([10, 20, 30])
b = list(a)
print(b)
Результат
[10, 20, 30]
Использование коллекций в логических операциях bitwise
Коллекции могут пригодиться и при выполнении побитовых операций. Операторы & (И), | (ИЛИ) и ^ (Исключающее ИЛИ) можно применять не только к парам чисел, но и к коллекциям элементов.
Например, если у нас есть две коллекции объектов:
x = {1, 2, 3, 4}
y = {3, 4, 5, 6}
То можем выполнить над ними следующие операции:
x & y = {3, 4}
(объекты, присутствующие в обеих коллекциях)
x | y = {1, 2, 3, 4, 5, 6}
(объекты, присутствующие в любой из коллекций)
x ^ y = {1, 2, 5, 6}
(объекты, присутствующие только в одной из коллекций)
Вопрос-ответ:
Что такое множество в Python?
Множество (set) в Python - это коллекция уникальных и неупорядоченных элементов. Они представляют собой набор значений, и каждый элемент может встречаться в множестве только один раз.