Python Set — мощная коллекция, которую должен использовать каждый разработчик в 2022 году - Kaif

Python Set — мощная коллекция, которую должен использовать каждый разработчик в 2022 году

ВСТУПЛЕНИЕ

Существует три основных коллекции Python: список, Словарь и набор. Пока список и Словарь широко используются почти в каждом фрагменте существующего кода Python, набор иногда кажется немного недооцененным, хотя это не должно!

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

Если вы овладеете своими знаниями в наборы, это значительно улучшит ваш код и сократит время разработки. Итак, углубимся в питон наборы без дальнейших церемоний

Начнем с мотивирующей задачи. Как получить уникальный значения из список которые могут содержать дубликаты?

Ну, используя питон набор вы можете сделать это с помощью одной строки кода! Просто создайте набор из данного список:

Как создать набор Python из списка.
Как создать набор Python из списка.

Обратите внимание, что теперь наш уникальные_имена набор не содержит дубликатов. Так что же здесь произошло? Вы только что видели в действии одно из двух основных свойств набор:

Элементы набора уникальны.

Это приводит нас к краткому обсуждению двух основных набор характеристики.

Установить свойства

Set реализует два основных свойства, существенно отличающих его от list:

  • Элементы набора уникальны
  • Элементы множества неупорядочены.

На первый взгляд это может показаться странным  — зачем кому-то использовать коллекцию, которая не поддерживает порядок и не допускает дублирования, когда у нас есть python? список что не имеет этих ограничений?

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

Позвольте мне показать вам пару примеров.

Пример 1. Допустим, вы хотите сохранить все города, в которых когда-либо проводились олимпийские игры.

Уникальность

В следующем фрагменте кода у нас есть список дождливых месяцев в Израиле за последние 3 года. Так как есть некоторые зимние месяцы, когда Израиль обычно получает воду с неба, в таблице есть дубликаты. rainy_months_list.

Если мы хотим получить уникальный набор дождливых месяцев в Израиле, единственное, что нам нужно сделать, это создать набор и инициализировать его из дождливые_месяцы_список.

Код Python для демонстрации уникальности элементов в наборе
Код Python для демонстрации уникальности элементов в наборе

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

Код Python - невозможно добавить дубликаты в набор
Код Python - невозможно добавить дубликаты в набор

После того, как мы увидели набор поведение, поддерживающее его уникальность свойство, давайте перейдем ко второму набор свойство — его элементами являются неупорядоченный.

Отсутствие заказа

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

Код Python - set не поддерживает индексацию
Код Python - set не поддерживает индексацию

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

Код Python - итерация по набору
Код Python - итерация по набору

Установить специальный функционал

После того, как мы увидели набор свойства, давайте взглянем на мощную функциональность питон набор реализует:

  1. Перекресток
  2. Союз
  3. Разница

Если вы знакомы с Теория множеств, это точные действия, определенные там. Если вы никогда не слышали о теории множеств, вам поможет эта диаграмма:

Пересечение, союз и различие
Пересечение, союз и различие

Теперь давайте посмотрим на эти операции в действии на примерах кода.

Прежде всего, мы создадим 3 наборы работать с:

Создайте 3 комплекта. Питон.
Создайте 3 комплекта. Питон.
  • будни содержит все 7 существующих дней недели
  • sport_days описывает дни, когда я тренируюсь
  • лекция_дней будние дни, когда я учу своих студентов

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

Перекресток

В какие дни я читаю лекции по утрам И тренируюсь вечером?

Чтобы ответить на этот вопрос, нам нужно получить элементы, которые появляются оба в sport_days и лекция_дней, т. е. нам нужно получить перекресток из этих двух наборов. К счастью, мы можем сделать это всего одной строкой кода, используя перекресток метод:

Пример перекрестка. Питон.
Пример перекрестка. Питон.

Союз

В какие дни у меня есть что-то в моем расписании, т. е. какие у меня рабочие дни?

Ну, это те дни, которые появляются либо в sport_days или в лекция_дней, что и является определением союз. Сохраним эти дни как Busy_days. К счастью, тынион метод также поддерживается в набор:

Пример Союза. Питон.
Пример Союза. Питон.

Разница

Я планирую короткую однодневную прогулку с друзьями. Что это за дни, когда я совершенно свободен и у меня ничего нет в расписании?

Наверное, вы уже сейчас видите, что эти свободные дни как раз разница между будни и Busy_days. Другими словами, мы ищем дни, когда появляться в будни, но не появляться в Busy_days:

Пример разницы. Питон.
Пример разницы. Питон.

Эпилог

Поздравляю! Вы добавили отличный инструмент в свой набор инструментов Python!

Теперь пришло время применить полученные знания. Рассмотрите свои последние проекты Python. Были ли какие-либо данные, которые имели набор свойства, но были реализованы с использованием списки или другие коллекции? Если это так, попробуйте переписать свой код, чтобы использовать набор всякий раз, когда это подходит

Добавить комментарий