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

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

Відкрита

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)

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

2
Задача
Модуль 1: Python Core,  6 рівень,  6 лекція
Недоступна
Індексація
Індексація
2
Задача
Модуль 1: Python Core,  6 рівень,  6 лекція
Недоступна
Заміна
Заміна
Коментарі (9)
  • популярні
  • нові
  • старі
Щоб залишити коментар, потрібно ввійти в систему
Віктор
Рівень 44
11 лютого, 09:56
В сенсі "замінити за індексом у множині"? якщо індексації там нема, а порядок кожен раз може бути інший?!
negoda @poviranacze - Telegram в Python Intern (Train
18 липня 2025, 21:25
Еще нецелесообразная запись цикла 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 @poviranacze - Telegram в Python Intern (Train
18 липня 2025, 21:13
Не понимаю зачем (разве что для общего развития 😁) нужно обьяснять на "костылях" как найти сумму чисел или максимальное число через цикл, если это можно сделать с помощью функции 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))
5 червня 2025, 16:02
Який сенс в матеріалі щодо роботи з індексами множини?
Andrey Uzhva Працює в UA
27 березня 2025, 07:17
Чому при використанні даного генератора random_set = {randrange(1,51) for x in range(7)} . Створюються різна кількість елементів списку (то 6 то 7 елементів)
Шевцов Лев
Рівень 20
2 квітня 2025, 11:53
Бо при створені рандомних чисел, числа можуть повторюватись, тому дублікати і видаляються автоматично у множині
15 жовтня 2025, 19:21
Вдруг еще у кого возникнет такой вопрос: 1) разная длина может быть из-за того что могут создаться одинаковые числа а сет этого не пропустит (как и писали выше) 2) если вам нужна именно конкретная длина сета - собирайте его через цикл while
while len(numbers) < 10:
    numbers.add(random.randint(1, 50))
Ростислав
Рівень 22
22 лютого 2025, 18:56
Множини не зберігають порядок елементів
Марк
Рівень 50
15 грудня 2024, 17:57
Індексація - в завданні відсутній опис у якому вигляді потрібно виконати відображення множини. (не просто print() а за індексом та елементом)