JavaRush /Курси /Модуль 1: Python Core /Цикл по елементам множини

Цикл по елементам множини

Модуль 1: Python Core
Рівень 6 , Лекція 6
Відкрита

7.1 Цикл for

Використання циклів для ітерації по елементам множини є частою задачею в програмуванні, особливо коли необхідно обробити кожен елемент множини.

Для ітерації по елементам множини у Python зазвичай використовується цикл for. Оскільки множини не мають фіксованого порядку елементів, цикл for ідеально підходить для обходу елементів множини (тому що використовує механізм ітераторів)

Приклад:


my_set = {1, 2, 3, 4, 5}

for element in my_set:
    print(element)
        

Виглядає дуже просто – давайте додамо кілька практичних прикладів:

Сумування елементів множини

Розглянемо приклад, в якому ми сумуємо всі елементи множини.


my_set = {1, 2, 3, 4, 5}
total = 0
            
for element in my_set:
    total += element
            
print("Сума елементів множини:", total)
            
        

Вивід:


Сума елементів множини: 15
        

У цьому прикладі ми використовуємо цикл for, щоб по черзі додати кожен елемент множини my_set до змінної total, у результаті чого отримуємо суму всіх елементів множини.

Пошук максимального елементу

А тепер давайте знайдемо максимальний елемент у множині.


my_set = {1, 2, 3, 4, 5}
max_element = None
            
for element in my_set:
    if max_element is None or element > max_element:
        max_element = element
            
print("Максимальний елемент множини:", max_element)
        

Вивід:


Максимальний елемент множини: 5
        

У цьому прикладі цикл for використовується для перебору всіх елементів множини та визначення максимального значення.

Фільтрація елементів

Давайте створимо нову множину, що містить лише парні числа з вихідної множини.


my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_set = set()
            
for element in my_set:
    if element % 2 == 0:
        even_set.add(element)
            
print("Множина парних чисел:", even_set)
            
        

Множина парних чисел: {2, 4, 6, 8, 10}

У цьому прикладі цикл for використовується для фільтрації елементів, що задовольняють умові (парність), і додавання їх у нову множину even_set.

7.2 Використання enumerate()

Функція enumerate() повертає ітератор, що генерує кортежі, що складаються з індексу та відповідного елементу з ітерованого об'єкта.

При роботі з множинами, використання enumerate() може бути корисним для отримання індексів елементів під час ітерації. Однак, оскільки множини є неупорядкованими колекціями, порядок елементів при кожній ітерації не гарантується.

Функція enumerate() працює з множинами так само, як і з будь-якими іншими ітерованими об'єктами.

Ітерація з індексами

Використання enumerate() для отримання індексів елементів множини під час ітерації.


my_set = {10, 20, 30, 40, 50}

for index, element in enumerate(my_set):
    print(f"Індекс: {index}, Елемент: {element}")
        

Можливий вивід:


Індекс: 0, Елемент: 40
Індекс: 1, Елемент: 10
Індекс: 2, Елемент: 50
Індекс: 3, Елемент: 20
Індекс: 4, Елемент: 30
        

Збереження індексів та елементів у списку

Розглянемо приклад, у якому ми зберігаємо індекси та елементи множини у списку для подальшої обробки.


my_set = {"apple", "banana", "cherry"}

indexed_elements = [(index, element) for index, element in enumerate(my_set)]
print(indexed_elements)
        

Можливий вивід:


[(0, 'banana'), (1, 'cherry'), (2, 'apple')]
        

Обробка елементів з використанням їх індексів

Розглянемо приклад, у якому ми виконуємо певну операцію над елементами множини, використовуючи їх індекси.


my_set = {1, 2, 3, 4, 5}
squared_elements = {}
            
for index, element in enumerate(my_set):
    squared_elements[index] = element ** 2
            
print(squared_elements)
            
        

Можливий вивід:


{0: 16, 1: 1, 2: 25, 3: 4, 4: 9}
        

7.3 Використання циклу while

В принципі при роботі з множинами можна використовувати і цикл while. Наприклад, можна по одній діставати задачі (елементи) з множини, поки вона не порожня:


my_set = {"прибрати дім", "помити посуд", "купити хліба"}
while len(my_set) > 0:
    task = my_set.pop()
    print(task)
        

Такий підхід буде працювати. Загалом у вас є купа способів працювати з множиною елементів — використовуйте будь-який на ваш вибір.

Коментарі (9)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Віктор Рівень 1
11 лютого 2026
В сенсі "замінити за індексом у множині"? якщо індексації там нема, а порядок кожен раз може бути інший?!
negoda Рівень 31
18 липня 2025
Еще нецелесообразная запись цикла 7.3 :

my_set = {"прибрати дім", "помити посуд", "купити хліба"}
while len(my_set) > 0:
    task = my_set.pop()
    print(task)
Проще записать условие цикла так :

my_set = {"прибрати дім", "помити посуд", "купити хліба"}
while my_set:
    task = my_set.pop()
    print(task)
Этот вариант более читабелен и понятен. В любом случае логическое условие цикла звучит как "Пока в множестве my_set есть элементы -> цикл выполняется". И если мы записываем условие просто как while my_set:, то цикл будет выполнятся до тех пор, пока не примет значение False, то-есть пока множество не будет пустым, так-же как и в случае while len(my_set) > 0: - пока длинна множества больше чем 0 (то-есть пока множество не пусто).
negoda Рівень 31
18 липня 2025
Не понимаю зачем (разве что для общего развития 😁) нужно обьяснять на "костылях" как найти сумму чисел или максимальное число через цикл, если это можно сделать с помощью функции sum() и max() соответственно :

my_set = {1, 2, 3, 4, 5}
total = max(my_set)

print(total) #5

my_set = {1, 2, 3, 4, 5}
total = sum(my_set)

print(total) #15
Или в еще более коротком варианте, без присвоения значений переменной :

my_set = {1, 2, 3, 4, 5}
print(sum(my_set))
Наталья Крейц Рівень 18
5 червня 2025
Який сенс в матеріалі щодо роботи з індексами множини?
Andrey Uzhva Рівень 19
27 березня 2025
Чому при використанні даного генератора random_set = {randrange(1,51) for x in range(7)} . Створюються різна кількість елементів списку (то 6 то 7 елементів)
Шевцов Лев Рівень 20
2 квітня 2025
Бо при створені рандомних чисел, числа можуть повторюватись, тому дублікати і видаляються автоматично у множині
15 жовтня 2025
Вдруг еще у кого возникнет такой вопрос: 1) разная длина может быть из-за того что могут создаться одинаковые числа а сет этого не пропустит (как и писали выше) 2) если вам нужна именно конкретная длина сета - собирайте его через цикл while

while len(numbers) < 10:
    numbers.add(random.randint(1, 50))
Ростислав Рівень 22
22 лютого 2025
Множини не зберігають порядок елементів
Марк Рівень 50
15 грудня 2024
Індексація - в завданні відсутній опис у якому вигляді потрібно виконати відображення множини. (не просто print() а за індексом та елементом)