Рекомендации по использованию наборов в Python

1. Что такое набор Python?

set - это неупорядоченный и изменяемый набор уникальных элементов. Наборы записываются в фигурные скобки ({}), являясь элементами, разделенными запятыми.

В следующем блоке кода показаны два набора, содержащие набор чисел и городов.

Любой неизменяемый тип данных может быть элементом набора (например, строки и целые числа). Если вы попытаетесь использовать изменяемый тип данных внутри набора, возникает исключение (TypeError), как показано ниже.

2. Создайте набор с конструктором set ()

Наборы также можно определить с помощью встроенной функции set ([iterable]). Эта функция принимает в качестве аргумента итерацию (т.е. любой тип последовательности, коллекции или итератора), возвращая набор, содержащий уникальные элементы из ввода (повторяющиеся значения удаляются).

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

Мы также можем использовать конструктор set () без каких-либо входных параметров. В этом случае конструктор возвращает пустой набор.

3. Добавить элемент в набор

Чтобы добавить элемент в набор, мы используем метод set.add (element). Этот метод изменяет набор на месте, возвращая Нет.

Как показано ниже, метод .add () не добавляет элемент в набор, если элемент уже присутствует, поскольку наборы не могут содержать повторяющиеся элементы.

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

4. Удалить элемент из набора

Удалить элементы из набора можно тремя способами:

  • Использование метода set.remove (x)
  • Использование метода set.discard (x)
  • Использование метода set.pop ()

Метод удаления

Метод set.remove (x) удаляет элемент x из набора. Этот метод изменяет набор в -место, возвращается Нет. Если элемент x не существует, возникает исключение (KeyError).

Метод отбрасывания

Метод set.discard (x) удаляет элемент x из набора, если он присутствует. По сравнению с методом remove, метод discard не вызывает исключения (KeyError), если удаляемый элемент не существует.

Как показано выше, метод discard изменяет set на месте, возвращая None.

Поп-метод

Метод set.pop () удаляет и возвращает произвольный элемент из набора.

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

5. Математические операции: объединение, пересечение, разность и симметричная разность.

Мы можем использовать наборы в Python для вычисления математических операций, таких как объединение, пересечение, разность и симметричная разница. Эти логические операции могут быть представлены в виде диаграммы, называемой диаграммой Венна. Диаграммы Венна широко используются в математике, статистике и информатике для визуализации различий и сходств между множествами. Мы можем построить двух- и трехкружные диаграммы Венна с взвешенными по площади с помощью сторонней библиотеки matplotlib-venn. 💜

Даны два набора, один из которых содержит животных-млекопитающих, а другой - водных животных.

Мы можем вычислить вышеупомянутые математические операции следующим образом.

Союз

объединение двух наборов A и B - это набор, содержащий элементы, которые находятся в A, B или оба и обозначается как A ∪ B.

Заштрихованная красным область на диаграмме Венна представляет объединение наборов млекопитающих и водных животных.

Чтобы вычислить эту операцию с помощью Python, мы можем использовать либо метод set.union (другой набор), либо | оператор.

Как показано выше, оба возвращают новый набор, содержащий все элементы из наборов млекопитающих и водных.

Пересечение

Пересечение двух наборов A и B - это набор, содержащий элементы, общие для обоих наборов, и обозначается A ∩ B.

Заштрихованная красным область диаграммы Венна представляет собой пересечение наборов млекопитающих и водных.

В Python мы можем вычислить пересечение двух множеств, используя либо метод set.intersection (другой набор), либо оператор &.

Как видите, метод пересечения и оператор & возвращают новый набор, содержащий элементы, существующие в обоих наборах, без их изменения.

Разница

Разница двух наборов A и B - это набор всех элементов набора A, не содержащихся в наборе B и обозначается AB.

Заштрихованная красным область на диаграмме Венна представляет разницу между млекопитающими и водными (млекопитающие-водные). Этот набор содержит животных, которые являются млекопитающими, но не водными.

Мы также можем получить водных животных, но не млекопитающих, рассчитав разницу между водными и млекопитающими.

Чтобы вычислить разницу между двумя наборами в Python, мы можем использовать либо метод set.difference (another set) (set-other set), либо оператор (-).

Как видите, наборы «млекопитающие» и «водные животные» не изменяются на месте.

Симметричная разница

Симметричная разница двух наборов A и B - это набор элементов, которые входят в любой из наборов A и B, но не в обоих, и обозначается A △ B.

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

В Python мы можем найти симметричную разницу двух наборов с помощью метода set.symmetric_difference (другой набор) или оператора ^ следующим образом .

6. Подмножества и надмножества

набор A является подмножеством набора B (A ⊆ B) или, что эквивалентно, набор B является надмножество набора A (B ⊇ A), если все элементы набора A содержатся в наборе B.

На следующей диаграмме Венна представлены два набора млекопитающих и водных_ млекопитающих, которые являются водными_ млекопитающими подмножеством млекопитающих .

Чтобы проверить, является ли набор A подмножеством / расширенным набором набора B, мы можем использовать следующие методы:

  • A.issubset (B) → Этот метод возвращает True, если все элементы набора A содержатся в наборе B.
  • A.issuperset (B) → Этот метод возвращает True, если все элементы набора B содержатся в наборе A. .

В следующем блоке кода используются оба метода, чтобы проверить, является ли набор подмножеством / надмножеством другого набора.

7. Непересекающиеся

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

Мы можем проверить, являются ли два набора непересекающимися, используя метод set.isdisjoint (другой набор). Этот метод возвращает True, если оба набора не имеют общих элементов. Если да, возвращается False.

8. Проверьте, существует ли элемент в наборе.

Чтобы проверить, существует ли элемент в наборе, мы должны использовать оператор членства. Операторы членства используются для проверки наличия элемента в последовательности (например, строках, списках, кортежах, наборах или словарях). Как описано ниже, существует два оператора членства.

  • in → принимает значение Истина, если объект слева включен в объект справа.
  • не в → принимает значение Истина, если объект слева не включен в объект справа.

9. Найдите длину набора.

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

10. Альтернативный контейнер: frozenset

Объект frozenset - это набор, который после создания не может быть изменен. Мы создаем Frozenset в Python с помощью конструктора frozenset ([iterable]), предоставляя итерацию в качестве входных данных.

Поскольку frozensets неизменяемы, они не принимают методы, которые изменяют наборы на месте, такие как add, pop или remove . Как показано ниже, при попытке добавить элемент в frozenset возникает исключение (AttributeError).

В отличие от наборов, frozensets можно использовать как ключи в словаре или как элементы другого набора.

Интересные сайты

Помимо официальной документации Python, существует несколько веб-страниц, на которых вы можете найти подробные объяснения того, как использовать наборы, а также примеры.







Другие статьи о контейнерах Python





Аманда