Python Урок 11

## Множество

**Множество** — это структура данных, которая содержит непорядочные элементы.

**Непорядочные элементы** — это те элементы, которые не проиндексированы, нее имею порядковый номер, находятся в случайной порядке.

У множество есть ряд свойств, которые отделяют их от других структур данных.

**1.** Элементы не упорядочены.

**2.** Все элементы множества уникальны и не содержать дубликатов.

**3.** Элементы множества являются неизменными, но само множество изменить можно.

### Работа с множеством

Чтобы создать множество воспользуемся фигурными скобками {}.

```
numbers = {1, 2, 3, 4, 5, 6, 7}
print(numbers)

```

Множество без значений, будет являться dict/словарем. Давайте проверим с помощью модуля type.

```
numbers = {}
print(type(numbers))

```

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

```
numbers = set()
print(type(numbers))

```

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

```
numbers = frozenset({1, 2, 3, 4, 5, 6, 7})
print(type(numbers))

```

### Конвертация в множество

Как можно еще создать множество? Можно взять структуру данных (dict/словарем) для нашей функции set.

Даже если в словаре есть одинаковые элементы, конвертируя его в множество и вывести, то он покажет только уникальные элементы.

```
numbers = set([1, 2, 3, 4, 3, 6, 2])
print(numbers) *# Выведет множество, исключая дубликаты.*

```

## Методы

### Множество: доступ к элементам

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

```
numbers = {1, 2, 3, 4, 5, 6, 7}
for i in numbers:
     print(i) *# Выведет элементы множества столбиком.*

```

Чтобы проверить какой элемент входит в множество, вы можете воспользоваться операцией in.

```
numbers = {1, 2, 3, 4, 5, 6, 7}
print(3 in numbers) *# Выведет true, если 3 находиться в множестве. Если 3 нет, то выведет false.*

```

### Множество: добавление

Добавить элементы в множество, можно с помощью метода add.

```
numbers = {1, 2, 3, 4, 5, 6, 7}
numbers.add(8) *# Добавит 8 в множество.*
print(numbers)

```

### Множество: удаление

Добавить элементы в множество, можно с помощью метода descard и remove.

Метод descard используется, если вы не знаете присутствует удаляемый элемент или отсутствует. Если элемента нет, программа пропускает это действие, и продолжает работу.

```
numbers = {1, 2, 3, 4, 5, 6, 7}
numbers.descard(8)
print(numbers)

```

Метод remove используется, если вы знаете присутствует удаляемый элемент или отсутствует. Если элемента нет, программа выводит ошибку в консоли, и останавливает работу.

```
numbers = {1, 2, 3, 4, 5, 6, 7}
numbers.remove(8)
print(numbers)

```

Метод pop удаляет первый элемент множества.

```
numbers = {1, 2, 3, 4, 5, 6, 7}
numbers.pop()
print(numbers)

```

Метод clear удаляет все элементы множества.

```
numbers = {1, 2, 3, 4, 5, 6, 7}
numbers.clear()
print(numbers)

```

### Множество: объединение

Несколько множеств можно объединять, благодаря аннотации union.

```
number1 = {1, 2, 3, 4, 5, 6, 7}
number2 = {8, 2, 9, 4, 10, 6, 11}
number3 = number1.union(number2)
print(number3)

```

Еще несколько множеств можно объединить, благодаря символу |.

```
number1 = {1, 2, 3, 4, 5, 6, 7}
number2 = {8, 2, 9, 4, 10, 6, 11}
number3 = number1 | number2
print(number3)

```

### Множество: пересечение

С нескольких множеств, можно вывести пересекающие элементы, благодаря аннотации intersection.

```
number1 = {1, 2, 3, 4, 5, 6, 7}
number2 = {8, 2, 9, 4, 10, 6, 11}
number3 = number1.intersection(number2)
print(number3)

```

Еще с нескольких множеств, можно вывести пересекающие элементы, благодаря символу &.

```
number1 = {1, 2, 3, 4, 5, 6, 7}
number2 = {8, 2, 9, 4, 10, 6, 11}
number3 = number1 & number2
print(number3)

```

Еще с нескольких множеств, можно вывести не пересекающие/разницу элементы с первого множества, благодаря символу -.

```
number1 = {1, 2, 3, 4, 5, 6, 7}
number2 = {8, 2, 9, 4, 10, 6, 11}
number3 = number1 - number2
print(number3)

```

### Множество: копирование

Можно скопировать элементы с первого множества во третье, благодаря аннотации copy.

```
number1 = {1, 2, 3, 4, 5, 6, 7}
number2 = {8, 2, 9, 4, 10, 6, 11}
number3 = number1.copy()
print(number3)

```

Метод len возвращает длину/количество элементов множества.

```
number1 = {1, 2, 3, 4, 5, 6, 7}
number2 = {8, 2, 9, 4, 10, 6, 11}
number3 = number1.copy()
print(len(number3))

```