# 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>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://olexsyn.gitbook.io/enote/progr/python/set.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
