Учебное пособие по Python - Набор типов данных
- Создать наборы Python
- Обновление набора Python
- Удаление элементов из набора Python
- Операции с набором Python
- Методы Pythonых множеств
- Другие операции по установке Python
- Встроенные функции набора Python
- Python Фрозенсет

В этом разделе вы узнаете, как создавать сеты на Python и как добавлять и удалять элементы из сетов.
Набор содержит уникальные элементы и представляет собой неупорядоченный список элементов.
set
- это изменяемый объект, так что вы можете добавлять и удалять элементы из множества.Создать наборы Python
Набор на Python может быть создан с помощью фигурных скобок {}
, а элементы разделены запятыми. Вы также можете создать множество, используя встроенный метод set()
.
Элементы множества могут быть разных типов данных. Элементы множества должны быть неизменными. Например, в качестве элемента множества может быть кортеж, но в качестве элементов множества не может быть ни набора, ни словаря, ни списка.
>>> x = {3, 5, 7, 2, 4, 5}
>>> print(x) #prints the set variable
{2, 3, 4, 5, 7}
>>> print(type(x)) #checking type of x
<class 'set'>
Для создания пустого списка можно использовать метод set()
с пустыми параметрами. Если Вы пишете {}
для создания пустого объекта, то он интерпретируется как словарь:
>>> x = {}
>>> print(type(x))
<class 'dict'>
>>> x = set()
>>> print(type(x))
<class 'set'>
Обновление набора Python
Индексирование и срезание не может быть использовано для изменения элементов множества, так как set
не является упорядоченным типом данных.
Одиночный элемент может быть добавлен в множество с помощью метода add()
. Если Вы хотите добавить более одного элемента в множество, то необходимо использовать метод update()
.
>>> s = {2, 4}
>>> print(s)
{2, 4}
>>> s.add(6)
>>> print(s)
{2, 4, 6}
>>> s.update([2, 4, 6])
>>> print(s)
{2, 4, 6}
>>> s.update([5,6], {7, 8, 9})
>>> print(s)
{2, 4, 5, 6, 7, 8, 9}
Удаление элементов из набора Python
Для удаления элемента из множества можно использовать либо метод discard()
, либо метод remove()
.
Разница между этими методами заключается в том, что метод discard()
не будет ничего вызывать, если удаляемого элемента нет в множестве, тогда как метод remove()
будет вызывать ошибку, если удаляемый элемент не найден.
>>> s = {2, 4, 5, 6, 7, 8, 9}
>>> print(s)
{2, 4, 5, 6, 7, 8, 9}
>>> s.discard(6)
>>> print(s)
{2, 4, 5, 7, 8, 9}
>>> s.remove(8)
>>> print(s)
{2, 4, 5, 7, 9}
>>> s.discard(6) #no error
>>> s.remove(8) #generated an error
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
s.remove(8)
KeyError: 8
Вы также можете использовать pop()
для удаления элемента из множества. pop()
удаляет и возвращает один произвольный элемент множества.
>>> s = set("Python")
>>> s
{'o', 'n', 'h', 'P', 'y', 't'}
>>> s.pop()
o
>>> s.pop()
n
>>> s
{'h', 'P', 'y', 't'}
>>> s.clear()
>>> print(s)
set()
Вы можете использовать метод set clear()
для очистки всех элементов множества.
>>> s = set("Python")
>>> s.clear()
>>> s
set()
Операции с набором Python
Вы можете выполнять такие операции, как union
, intersection
, difference
, и symmetric_difference
.
Предположим, что у Вас есть два набора x
и y
:
>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 10, 11, 12}
Союз
В результате объединения двух наборов получается новый набор, содержащий все элементы обоих наборов.
Для выполнения операции объединения можно использовать оператор |
или метод union()
.
>>> print(x | y)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
#using union() method on x
>>> x.union(y)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
#union on y
>>> y.union(x)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
Пересечение множества Python
Пересечение двух наборов приводит к появлению нового набора, содержащего элементы, общие для обоих наборов.
Для выполнения операции пересечения можно использовать оператор &
или метод intersection()
.
>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 2, 6, 1}
>>> print(x & y)
{1, 2, 6}
#using intersection() method on x
>>> x.intersection(y)
{1, 2, 6}
#intersection on y
>>> y.intersection(x)
{1, 2, 6}
Различие наборов Python
Различие двух множеств приводит к появлению нового множества, которое содержит элементы первого множества, отсутствующие во втором множестве.
Например, x - y
- это элементы x
не в y
. Аналогично, y - x
- это элементы y
не в x
.
Для выполнения различия можно использовать либо оператор -
, либо метод дифференс()
.
>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 2, 6, 1}
>>> print(x - y)
{3, 4, 5}
#using difference() method on x
>>> x.difference(y)
{3, 4, 5}
#diference on y
>>> y.difference(x)
{8, 9, 7}
Python Sets Symmetric difference
Симметричное различие двух наборов приводит к появлению нового набора, содержащего элементы, не являющиеся общими для обоих наборов.
Для выполнения симметричного различия можно использовать оператор ^
или метод symmetric_difference()
.
>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 2, 6, 1}
>>> print(x ^ y)
{3, 4, 5, 7, 8, 9}
#using symmetric_difference() method on x
>>> x.symmetric_difference(y)
{3, 4, 5, 7, 8, 9}
#symmetric_diference on y
>>> y.symmetric_difference(x)
{3, 4, 5, 7, 8, 9}
Методы Pythonых множеств
Ниже приведен список методов, которые могут применяться на множествах на Python:
Метод | Описание |
---|---|
add() |
добавлять элемент в комплект |
clear() |
очистить элементы комплекта (очищает весь комплект) |
copy() |
вернуть копию комплекта |
difference() |
вернуть новый набор, который содержит элементы первого набора, отсутствующие во втором наборе. |
difference_update() |
удалить все элементы другого набора из текущего набора |
discard() |
удалять конкретный элемент из набора |
intersection() |
вернуть новый набор, содержащий элементы, общие для обоих наборов. |
intersection_update() |
обновить набор с пересечением этого набора с другим набором. |
isdisdisjoint() |
возвращает True , когда два набора приводят к нулевому пересечению |
issubset() |
возвращать True , когда другой набор имеет текущий набор. |
issuperset() |
вернуть True , когда текущий набор имеет другой набор. |
pop() |
возвращать элемент из набора |
remove() |
удалить конкретный элемент из набора. Если элемент не находится в наборе, будет сгенерирована ошибка. |
symmetric_difference() |
вернуть новый набор, который содержит элементы, не являющиеся общими для обоих наборов. |
symmetric_difference_update() |
обновить набор с симметричной разницей этого набора другим набором |
union() |
вернуть новый набор, содержащий все элементы обоих наборов. |
update() |
обновить набор с объединением этого набора с другим набором. |
Другие операции по установке Python
Установить проверку членства
Ключевое слово in
проверяет, является ли элемент членом набора или нет.
>>> s = set("Blue")
>>> print('o' in s)
False
>>> print('l' in s)
True
Итерация через набор
Вы можете выполнить итерацию через набор, используя цикл for
:
for i in set("Blue"):
print(i)
Result:
B
l
u
e
Встроенные функции набора Python
Ниже приведены некоторые из встроенных функций, которые могут использоваться с наборами для выполнения различных задач:
Функции | Описание |
---|---|
all() |
вернуть True , когда все элементы набора Истина . Также возвращается True , когда набор пуст. |
any() | вернуть True , когда любой из элементов множества является Истиной . Возвращает False , когда набор пуст. |
enumerate() |
вернуть индекс и значение всех элементов набора в виде кортежа. Возвращает объект внумерация . |
len() |
вернуть количество элементов в комплекте или длину комплекта. |
set() |
определить набор. |
max() |
вернуть максимальное значение в комплекте. |
min() |
вернуть минимальный элемент в комплекте. |
sorted() |
вернуть отсортированный список элементов набора. |
sum() |
вернуть сумму всех элементов комплекта. |
Python Фрозенсет
Frozenset - это специальный набор, элементы которого не могут быть обновлены при однократном назначении. Frozenset является неизменяемым набором.
Поскольку наборы являются мутируемыми, вы не можете использовать их в качестве ключа в словаре, но замороженные наборы являются неизменяемыми, следовательно, вы можете использовать замороженные наборы в качестве ключа словаря.
Наборы замороженных множеств могут быть созданы с помощью метода frozenset()
.
Ниже приведены некоторые из методов, поддерживаемых frozenset:
copy()
difference()
intersection()
isdisdisjoint()
issubset()
issuperset()
symmetric_difference()
union()
>>> x = frozenset([2,6,3,9])
>>> y = frozenset([6,1,2,4])
>>> x.difference(y)
frozenset({9, 3})
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn