Множества в Python.

Множество — это «мешок», содержащий неупорядоченные уникальные значения. Одно множество может содержать значения любых типов. Если у вас есть два множества, вы можете совершать над ними любые стандартные операции, например, объединение, пересечение и разность.

СОЗДАНИЕ МНОЖЕСТВА

>>> a_set = {1}    # создание множества с одним значением
>>> a_set
{1}
>>> type(a_set)     # создание множества реализующиеся как классы

>>> a_set = {1, 2}   # создание множества с несколькими значениями
>>> a_set
{1, 2}

ИЗМЕНЕНИЕ МНОЖЕСТВА

Есть два способа добавить элементы в существующее множество: метод add() и метод update().

# метод add()
>>> a_set = {1, 2}
>>> a_set.add(4)  (1)
>>> a_set
{1, 2, 4}
>>> len(a_set)    (2)
3
>>> a_set.add(1)  (3)
>>> a_set
{1, 2, 4}
>>> len(a_set)    (4)
3
  1. Метод add() принимает один аргумент, который может быть любого типа, и добавляет данное значение в множество.
  2. Теперь множество содержит 3 элемента.
  3. Множества — мешки уникальных значений. Если попытаться добавить значение, которое уже присутствует в множестве, ничего не произойдет. Это не приведет в возникновению ошибки; просто нулевое действие.
  4. Это множество все ещё состоит из 3 элементов.
# метод update()
>>> a_set = {1, 2, 3}
>>> a_set
{1, 2, 3}
>>> a_set.update({2, 4, 6})                       (1)
>>> a_set                                         (2)
{1, 2, 3, 4, 6}
>>> a_set.update({3, 6, 9}, {1, 2, 3, 5, 8, 13})  (3)
>>> a_set
{1, 2, 3, 4, 5, 6, 8, 9, 13}
>>> a_set.update([10, 20, 30])                    (4)
>>> a_set
{1, 2, 3, 4, 5, 6, 8, 9, 10, 13, 20, 30}
  1. Метод update() принимает один аргумент — множество, и добавляет все его элементы к исходному множеству.
  2. Повторяющиеся значения игнорируются, поскольку множество не может содержать дубликаты.
  3. Можно вызвать метод update() с любым количеством параметров. Когда он вызывается с двумя множествами, метод update() добавляет все элементы обоих множеств в исходное множество (пропуская повторяющиеся).
  4. Метод update() может принимать объекты различных типов, включая списки. Когда ему передается список, он добавляет все его элементы в исходное множество.

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

Для удаления одного элемента вызывается метод remove(), в который передается удаляемый элемент. Но следует учитывать, что если такого элемента не окажется в множестве, то будет сгенерирована ошибка. Поэтому перед удалением следует проверять на наличие элемента с помощью оператора in:

users = {"Tom", "Bob", "Alice"}
 
user = "Tom"
if user in users: 
    users.remove(user)
print(users)    # {"Bob", "Alice"}

Перебор множества

Для перебора элементов можно использовать цикл for.

users = {"Tom","Bob","Alice"}
 
for user in users:
    print(user)
# При переборе каждый элемент помещается в переменную user.

Операции с множествами

С помощью метода copy() можно скопировать содержимое одного множества в другую переменную:

users = {"Tom","Bob","Alice"}
users3 = users.copy()

Метод union() объединяет два множества и возвращает новое множество:

users = {"Tom","Bob","Alice"}
users2 = {"Sam","Kate", "Bob"}
 
users3 = users.union(users2)
print(users3)   # {"Bob", "Alice", "Sam", "Kate", "Tom"}

Метод intersection() производит операцию пересечения множеств и возвращает новое множество:

users = {"Tom","Bob","Alice"}
users2 = {"Sam","Kate", "Bob"}
 
users3 = users.intersection(users2)
print(users3)   # {"Bob"}

Еще одна операция — разность множеств возвращает те элементы, которые есть в первом множестве, но отсутствуют во втором. Для получения разности множеств можно использовать метод difference или операцию вычитания:

users = {"Tom","Bob","Alice"}
users2 = {"Sam","Kate", "Bob"}
 
users3 = users.difference(users2)
print(users3)           # {"Tom", "Alice"}
print(users - users2)   # {"Tom", "Alice"}

frozen set

Тип frozen set является видом множеств, которое не может быть изменено. Для его создания используется функция frozenset:

users = frozenset({"Tom", "Bob", "Alice"})

В функцию frozenset передается набор элементов — список, кортеж, другое множество.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Chinese (Traditional)EnglishJapaneseRussianUkrainian

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: