# set

**Множина (set) в Python** — це колекція, яка не впорядкована\*, незмінна\*\* та неіндексована.

> \* - Елементи множини виводяться у випадковому порядку
>
> \*\* -  Елементи множини не можна змінювати, але ви можете видалити елементи та додати нові.

Для створення множини всі елементи поміщають усередині фігурних дужок `{}`, розділених комами.

### Створення множини в Python

В Python для створення множини всі елементи поміщають усередині фігурних дужок `{}`, розділених комами.

Множина може містити будь-яку кількість елементів, і вони можуть бути різних типів (int, float, [**кортеж**](https://acode.com.ua/tuple-python/), [**рядки**](https://acode.com.ua/strings-python/) тощо). Але множина не може мати ***змінювані*** елементи, такі як [**списки**](https://acode.com.ua/list-python/), словники або інші множини.

Розглянемо приклад:

<pre class="language-python"><code class="lang-python"># Множина цілочисленного типу
<strong>student_id = {112, 114, 116, 118, 115}
</strong>print('Student ID:', student_id)
 
# Множина рядкового типу
vowel_letters = {'a', 'e', 'i', 'o', 'u'}
print('Vowel Letters:', vowel_letters)
 
# Множина змішаного типу
mixed_set = {'Hello', 101, -2, 'Bye'}
print('Set of mixed data types:', mixed_set)
</code></pre>

Результат:

```
Student ID: {112, 114, 115, 116, 118}
Vowel Letters: {'u', 'a', 'e', 'i', 'o'}
Set of mixed data types: {'Hello', 'Bye', 101, -2}
```

Тут ми створили різні типи множин, помістивши всі елементи усередині фігурних дужок `{}`.

***Примітка***: При виконанні цього коду можна отримати результат з елементами в іншому порядку. Це відбувається через те, що множина не має певного порядку.

Створення порожньої множини — справа нехитра. Порожні фігурні дужки створюють порожній словник у Python. А для створення **порожньої множини** потрібно використати функцію set() без жодних аргументів. Наприклад:

```python
# Створення порожньої множини
empty_set = set()
 
# Створення порожнього словника
empty_dictionary = { }
 
# Перевірка типу даних empty_set
print('Data type of empty_set:', type(empty_set))
 
# Перевірка типу даних dictionary_set
print('Data type of empty_dictionary', type(empty_dictionary))
```

Результат:

```
Data type of empty_set: <class 'set'>
Data type of empty_dictionary <class 'dict'>
```

### Дублювання елементів у множині

```python
numbers = {2, 4, 6, 6, 2, 8}
print(numbers)
```

Подивимося, що станеться, якщо ми спробуємо включити в набір елементи, що дублюються.

```
{8, 2, 4, 6}
```

Тут бачимо, що у множині немає однакових елементів, оскільки вона може містити дублі.<br>

### Додавання, оновлення та видалення елементів множини в Python

**Множини змінювані**. Однак, оскільки вони невпорядковані, індексування не має сенсу. Ми не можемо отримати доступ або змінити елемент множини за допомогою індексації або зрізу. Тип даних set не підтримує цього.

#### **add() -** Додавання елемента до множини

```
numbers.add(32)
```

#### **update() -** Оновлення множини

Використовується для оновлення множини елементів інших типів даних (списки, кортежі тощо).&#x20;

```python
companies = {'Lacoste', 'Ralph Lauren'}
tech_companies = ['apple', 'google', 'apple']
 
companies.update(tech_companies)
 
print(companies)
```

Результат:

`{'Lacoste', 'Ralph Lauren', 'apple', 'google'}`

#### **метод discard() -** Видалення елемента з множини

```python
languages = {'Swift', 'Java', 'Python'}
 
print('Initial Set:',languages)
 
# Видалення 'Java' з множини
removedValue = languages.discard('Java')
 
print('Set after remove():', languages)
```

Результат:

```
Initial Set: {'Python', 'Swift', 'Java'}
Set after remove(): {'Python', 'Swift'}
```

#### **len() -** Визначення кількості елементів множини

```python
even_numbers = {2,4,6,8}
print('Set:',even_numbers)
print('Total Elements:', len(even_numbers))

```

```
Set: {8, 2, 4, 6}
Total Elements: 4
```

### Методи для роботи з множинами в Python

<table data-header-hidden><thead><tr><th width="290"></th><th></th></tr></thead><tbody><tr><td><strong>Функції</strong></td><td><strong>Опис</strong></td></tr><tr><td><strong>add()</strong></td><td>Додає елемент до множини.</td></tr><tr><td><strong>all()</strong></td><td>Повертає True, якщо всі елементи множини дорівнюють True (або якщо множина порожня).</td></tr><tr><td><strong>any()</strong></td><td>Повертає True, якщо хоч один з елементів множини дорівнює True. Якщо множина порожня, повертається False.</td></tr><tr><td><strong>clear()</strong></td><td>Видаляє всі елементи з множини.</td></tr><tr><td><strong>copy()</strong></td><td>Повертає копію множини.</td></tr><tr><td><strong>difference()</strong></td><td>Повертає різницю двох або більше множин у вигляді нової множини.</td></tr><tr><td><strong>difference_update()</strong></td><td>Видаляє всі елементи іншої множини з поточної множини.</td></tr><tr><td><strong>discard()</strong></td><td>Видаляє елемент із множини, якщо він є її частиною. (Нічого не робить, якщо елемент не знаходиться у множині)</td></tr><tr><td><strong>enumerate()</strong></td><td>Повертає об’єкт переліку, який містить індекс і значення для всіх елементів множини у вигляді пари.</td></tr><tr><td><strong>intersection()</strong></td><td>Повертає перетин двох множин у вигляді нової множини.</td></tr><tr><td><strong>intersection_update()</strong></td><td>Оновлює множину перетином себе та іншої множини.</td></tr><tr><td><strong>isdisjoint()</strong></td><td>Повертає True, якщо дві множини не мають перетину.</td></tr><tr><td><strong>issubset()</strong></td><td>Повертає True, якщо інша множина містить поточну множину.</td></tr><tr><td><strong>issuperset()</strong></td><td>Повертає True, якщо поточна множина містить іншу множину.</td></tr><tr><td><strong>len()</strong></td><td>Повертає довжину (кількість елементів) у множині.</td></tr><tr><td><strong>max()</strong></td><td>Повертає найбільший елемент у множині.</td></tr><tr><td><strong>min()</strong></td><td>Повертає найменший елемент у множині.</td></tr><tr><td><strong>pop()</strong></td><td>Видаляє та повертає довільний елемент множини. Викликає помилку KeyError, якщо множина порожня.</td></tr><tr><td><strong>remove()</strong></td><td>Видаляє елемент із множини. Якщо елемент не є членом множини, виникає помилка KeyError.</td></tr><tr><td><strong>sorted()</strong></td><td>Повертає новий відсортований список з елементів множини (але не виконує сортування).</td></tr><tr><td><strong>sum()</strong></td><td>Повертає суму всіх елементів множини.</td></tr><tr><td><strong>symmetric_difference()</strong></td><td>Повертає симетричну різницю двох множин у вигляді нової множини.</td></tr><tr><td><strong>symmetric_difference_update()</strong></td><td>Оновлює множину з симетричною різницею себе та іншої.</td></tr><tr><td><strong>union()</strong></td><td>Повертає об’єднання множин у новій множині.</td></tr><tr><td><strong>update()</strong></td><td>Оновлює множину з об’єднанням себе та інших.</td></tr></tbody></table>

<https://acode.com.ua/set-python/>

<br>
