№11 Множества (set) / Уроки по Python для начинающих

Предыдущий урок: Кортежи (tuple)

Множества — неупорядоченная и не индексируемая последовательность. В Python множества пишутся в фигурных скобках.
Создание множества:

thisset = {"set", "list", "tuple"}
print(thisset)

Вывод:

{'set', 'tuple', 'list'}

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

Множество хранит только уникальные элементы:

thisset = {"set", "list", "tuple", "list"}
print(thisset)

Вывод:

{'set', 'tuple', 'list'}

Доступ к элементам

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

thisset = {"set", "list", "tuple"}
for x in thisset:  
    print(x)

Вывод:

set
list
tuple

Проверим присутствует ли "dict" этой последовательности:

thisset = {"set", "list", "tuple"}
print("dict" in thisset)

Вывод:

False

Изменение элементов

Вы не можете менять элементы set, но можете добавлять новые.

Добавить элементы

Чтобы добавить один элемент в set используйте метод add().
Чтобы добавить больше одного — метод update().

thisset = {"set", "list", "tuple"}
thisset.add("dict")  
print(thisset)

Вывод:

{'tuple', 'set', 'list', 'dict'}

Добавьте несколько элементов в thisset, используя метод update():

thisset = {"set", "list", "tuple"}
thisset.update(["dict",  "class",  "int"])
print(thisset)

Вывод:

{'dict', 'tuple', 'set', 'list', 'class', 'int'}

Получите длину set

Чтобы определить сколько элементов есть в наборе, воспользуйтесь методом len().

thisset = {"set", "list", "tuple"}
print(len(thisset))

Вывод:

3

Удаление элементов

Чтобы удалить элемент в множестве, воспользуйтесь методом remove(), или discard().
Уберем «list» используя метод remove():

thisset = {"set", "list", "tuple"}
thisset.remove("list")  
print(thisset)

Вывод:

{'tuple', 'set'}

Примечание: Если элемент, который нужно удалить не существует, remove() вызовет ошибку.
Убрать “list” используя метод discard():

thisset = {"set", "list", "tuple"}
thisset.discard("list")  
print(thisset)

Вывод:

{'tuple', 'set'}

Примечание. Если элемент для удаления не существует, discard() не будет вызывать ошибку.

Вы также можете использовать метод pop() — для удаления элемента, но он удалит только последний элемент. Помните, что set не упорядочены, поэтому вы не будите знать, какой элемент удаляете.

Возвращаемое значение метода pop () — это удаленный элемент.

thisset = {"set", "list", "tuple"}
x =  thisset.pop()  
print(x)  
print(thisset)

Вывод:

list
{'tuple', 'set'}

Метод clear() очистит множество:

thisset = {"set", "list", "tuple"}
thisset.clear()  
print(thisset)

Вывод:

set()

Ключевое слово del полностью удалит множество:

thisset = {"set", "list", "tuple"}
del thisset
print(thisset) # эта команда вызовет ошибку, так как thisset больше не существует

Конструктор set()

Есть так же возможность использовать конструктор set() для создания множества.

thisset = set(("set", "list", "tuple"))  # Используем двойные скобки
print(thisset)

Вывод:


{'set', 'tuple', 'list'}

Методы Set

В Python есть встроенные методы, с помощью которых вы можете работать с sets.

МетодЗначение
add(x)Добавляет элементы x в set
clear()Удаляет элементы из set
copy()Возвращает копию set
x.difference(y)Возвращает множество элементов, которые есть в х, но нет в y
x.difference_update(y)Удаляет элементы, которые есть в x и y
discard(x)Удаляет указанный элемент
x.intersection(y)Возвращает множество, являющийся пересечением x и y
intersection_update(y)Удаляет элементы в множестве, которых нет в других заданных y
x.isdisjoint(y)True, если x и y не имеют общих элементов
x.issubset(y)True, если все элементы из x есть в y
issuperset()True, если все элементы из y есть в x
pop()Удаляет и возвращает последний элемент
remove()Удаляет указанный элемент
x.symmetric_difference(y)Возвращает множество элементов, которые не пересекаются в х и y
symmetric_difference_update()Добавляет элементы, которых нет в другом множестве
union()Объединяет несколько множеств
x.update(y, z)Объединяет несколько множеств, перезаписывая x

Далее: Словарь (dict)