Что такое набор в Python и как его создать

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

Но как создать набор и использовать его в Python? Мы объясним это в этом посте.

Особенности наборов Python

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

  • Он неизменен: это означает, что вы не можете изменить значения набора после его создания.
  • Литерал набора возвращает динамическое расположение каждый раз, когда вы его создаете. По сути, предметы в наборе неупорядочены.
  • Поскольку он представляет неупорядоченные элементы, в отличие от литералов списков и словарей, вы не можете получить значения набора по их индексам.

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

Теперь, когда вы знаете основные функции набора Python. Давайте посмотрим, как вы можете использовать его в своей программе.

Вы используете фигурные скобки для создания набора в Python. Итак, набор – это список элементов в фигурных скобках, разделенных запятыми:

 mySet = {1, 2, "MUO", "Google"}
print(mySet)
Output: {1, 2, "MUO", "Google"}

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

 myList = [1, 2, "MUO", "Google"]
mySet = set(myList)
print(mySet)
Output: {1, 2, "MUO", "Google"}

Конечно, вы можете проверить тип данных mySet :

 myList = [1, 2, "MUO", "Google"]
mySet = set(myList)
print(type(mySet))
Output: <class 'set'>

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

Приведенный ниже код удаляет дубликаты в списке и представляет результат в виде набора Python:

 myList = [1, 2, 2 "MUO", "MUO", "Google", "Google"]
mySet = set(myList)
print(mySet)
Output: {1, 2, 'MUO', 'Google'}

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

 mySet = {1, 2, 2, "MUO", "MUO", "Google", "Google"}
print(len(mySet))
Output: 4

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

Для этого конвертируем словарь в набор:

 myDiction = {
"Mango":2, "Orange":2, "carrot":2, "MUO":"tech",
"MUO":"web", "Google":"search", "Google":"engine"
}
uniqueSet = set(myDiction)
print("These are the unique keys: {}".format(uniqueSet))
Output: These are the unique keys: {'Google', 'Mango', 'MUO', 'Orange', 'carrot'}

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

Вы можете изменить приведенный выше код с помощью цикла for, чтобы сделать его более понятным:

 for uniques in uniqueSet:
print(uniques)

Вы также можете объединить два набора с помощью метода union () :

 setA = {1, 3, 5}
setB = {1, 4, 6}
newSet = setA.union(setB)
print(newSet)
Output: {1, 3, 4, 5, 6}

Однако приведенный выше код объединяет два набора и удаляет повторяющиеся значения.

В качестве альтернативы можно использовать трубу | функция для объединения наборов в Python:

 setA = {1, 3, 5}
setB = {1, 4, 6}
newSet = setA|setB
print(newSet)
Output: {1, 3, 4, 5, 6}

Вы также можете найти разницу между двумя наборами в Python:

 setA = {1, 3, 5}
setB = {2, 4, 5,}
print(setA.difference(setB))
Output: {1, 3}

Вы можете найти симметричную разницу между наборами A и B. Этот метод возвращает элементы в любом наборе, но исключает их пересечения. Посмотрим, как это работает:

 setA = {1, 3, 5}
setB = {2, 4, 5,}
print(setA^setB)
Output: {1, 2, 3, 4}

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

 setA = {1, 3, 5}
setB = {2, 4, 5,}
print(setA.symmetric_difference(setB))
Output: {1, 2, 3, 4}

Давайте также посмотрим, как вы можете найти пересечение множеств ниже:

 setA = {1, 3, 5}
setB = {1, 4, 6}
setC = {1, 5, 4}
newSet = setA.intersection(setB, setC)
print(newSet)
Output: {1}

Хотя вы можете добавлять в список в Python , вы не можете сделать то же самое для набора Python. Однако вы можете добавить элемент в конец набора с помощью функции добавления .

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

 setA = {1, 3, 5}setC = {1, 3}
newSet = 1, 6
setC.add(newSet)
print(setC)
Output: {1, (1, 6), 3}

Набор Python использует метод isdisjoint (), чтобы проверить, не пересекаются ли два набора. Затем он возвращает логическое значение:

 setA = {1, 3, 5}
setB = {1, 4, 6}
findDisjoint = setA.isdisjoint(setB)
print("It's {} that setA is a disjoint of B".format(findDisjoint))
Output: It's False that setA is a disjoint of B

Чтобы проверить, является ли набор подмножеством другого, замените isdisjoint () на issubset () :

 findSubset = setA.issubset(setB)

Вы можете удалить элемент из набора:

 setA = {1, 3, 5}
setA.remove(5)
print(setA)
Output: {1, 3}

Метод clear () очищает элементы в наборе и возвращает пустой набор:

 setA = {1, 3, 5}
setA.clear()
print(setA)
Output: set()

Вы можете удалить произвольный элемент из набора и вернуть его значение с помощью метода set.pop () :

 setA = {1, 3, 5}
print(setA.pop())

Вы также можете обновить набор Python с помощью метода update ():

 setA = {1, 'b'}
setB = {2, 4, 5,}
print(setA.update(setB))
print(setA)
Output: {1, 2, 4, 5, 'b'}

Поиграйте с наборами Python

Хотя мы видели, как вы можете использовать набор в Python, есть и другие практические способы применения его в вашем коде. Как вы видели, он может даже пригодиться при очистке данных с помощью Python.

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