JavaRush /Курсы /Модуль 1: Python Core /Изменение множества

Изменение множества

Модуль 1: Python Core
6 уровень , 4 лекция
Открыта

5.1 Добавление элемента

Изменять множества в Python очень просто: фактически над ними доступны только 3 операции: добавить элемент в множество, удалить элемент из множества и проверить — есть ли элемент во множестве.

Для добавления одного элемента в множество используется метод add(). Этот метод добавляет элемент в множество, если его там еще нет. Если элемент уже присутствует, то множество останется без изменений.

Пример:


my_set = {1, 2, 3}
my_set.add(4)
print(my_set)  # Вывод: {1, 2, 3, 4} 
        

В этом примере элемент 4 добавляется в множество my_set. Если бы мы попытались добавить элемент, который уже присутствует, например, 2, множество не изменилось бы:


my_set = {1, 2, 3, 4}
my_set.add(2)
print(my_set)  # Вывод: {1, 2, 3, 4}
        

5.2 Добавление нескольких элементов

Для добавления нескольких элементов в множество используется метод update(). Этот метод принимает любой итерируемый объект (список, кортеж, строку и т.д.) и добавляет все его элементы в текущее множество. Если какой-либо из добавляемых элементов уже присутствует в множестве, он не будет добавлен повторно.

Пример с добавлением элементов из списка


my_set = {1, 2, 3}
my_set.update([4, 5, 6])
print(my_set)  # Вывод: {1, 2, 3, 4, 5, 6}
        

В этом примере все элементы из списка [4, 5, 6] добавляются в множество my_set.

Пример с добавлением элементов из кортежа


my_set = {1, 2, 3}
my_set.update((4, 5, 6))
print(my_set)  # Вывод: {1, 2, 3, 4, 5, 6}
        

Пример с добавлением элементов из строки

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


my_set = {'a', 'b', 'c'}
my_set.update('def')
print(my_set)  # Вывод: {'a', 'b', 'c', 'd', 'e', 'f'}
        

Добавление элементов из другого множества

Метод update() также может принимать другое множество в качестве аргумента. Все элементы из второго множества будут добавлены в первое множество.


set1 = {1, 2, 3}
set2 = {3, 4, 5}
set1.update(set2)
print(set1)  # Вывод: {1, 2, 3, 4, 5}
        

5.3 Практическое применение

Вот несколько хороших практических примеров использования множеств в реальной жизни.

Удаление дубликатов

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


my_list = [1, 2, 2, 3, 4, 4, 5]
my_set = set(my_list)
print(my_set)  # Вывод: {1, 2, 3, 4, 5}
        

Объединение данных

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


set1 = {'apple', 'banana'}
set2 = {'banana', 'cherry'}
set3 = {'cherry', 'date'}
            
combined_set = set1 | set2 | set3
print(combined_set)  # Вывод: {'apple', 'banana', 'cherry', 'date'}
            
        
2
Задача
Модуль 1: Python Core, 6 уровень, 4 лекция
Недоступна
Случайные множества
Случайные множества
2
Задача
Модуль 1: Python Core, 6 уровень, 4 лекция
Недоступна
Множественность
Множественность
Комментарии (32)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
PaPaY Уровень 13
20 марта 2026

user_set = set()
for index in range(5):
    user_index = int(input(f"Введіть число, яке бажаєте додати до множини(залишилось: {5 -index}): "))
    temp_set = {user_index}
    user_set.update(temp_set)
print(user_set)
PaPaY Уровень 13
20 марта 2026

from random import randint

first_user_list = [randint(0, 99) for _ in range(10)]
second_user_list = [randint(50, 125) for _ in range(10)]
first_user_set, second_user_set = set(first_user_list), set(second_user_list)
total_set = first_user_set | second_user_set
print(len(total_set))
Людмила Уровень 11
17 марта 2026
# чтобы выполнялось условие - Для каждого из них создавайте отдельное множество - надо в цикле # обнулять это отдельное множество my_set = set() my_set_num = set() for k in range(5): num = int(input("Enter a number: ")) my_set_num = set() my_set_num.add(num) #print(my_set_num) my_set.update(my_set_num) print(my_set)
EvgenyXIV Уровень 31
17 марта 2026
my_set_num = set() - это не "обнуление" прежнего сета my_set_num, а создание ссылки на новый сет просто с тем же названием этой ссылки - прежние сеты,созданные с таким названием, при этом не меняются и остаются в своих ячейках памяти... Это особенность python. Поэтому в вашем коде можно сразу писать my_set_num = set([num]) - это и будут новые множества. А можно и ещё проще: my_set = set() for _ in range(5): my_set.update({int(input())}) print(my_set)
Людмила Уровень 11
18 марта 2026
"это не "обнуление" прежнего сета my_set_num, а создание ссылки на новый сет" - как я понимаю, это и есть требование задачи - "Для каждого из них создавайте отдельное множество" а если оставить без "обнуления", то каждый новый элемент добавляется не в отдельное множество, а в одно и тоже, что видно если добавить print my_set = set() my_set_num = set() for k in range(5): num = int(input("Enter a number: ")) #my_set_num = set() my_set_num.add(num) print(my_set_num) my_set.update(my_set_num) print(my_set) --- вывод Enter a number: 1 {1} Enter a number: 2 {1, 2} Enter a number: 3 {1, 2, 3} Enter a number: 4 {1, 2, 3, 4} Enter a number: 5 {1, 2, 3, 4, 5} {1, 2, 3, 4, 5}
Людмила Уровень 11
18 марта 2026
а если с "обнулением", то my_set = set() my_set_num = set() for k in range(5): num = int(input("Enter a number: ")) my_set_num = set() my_set_num.add(num) print(my_set_num) my_set.update(my_set_num) print(my_set) вывод - Для каждого введенного элемента создается отдельное множество Enter a number: 1 {1} Enter a number: 2 {2} Enter a number: 3 {3} Enter a number: 4 {4} Enter a number: 5 {5} {1, 2, 3, 4, 5}
EvgenyXIV Уровень 31
23 марта 2026
Не совсем так. Ещё раз: "my_set_num" - это имя, а не объект. Это ссылка на ячейки памяти, где "живёт" объект. Если имя "my_set_num" использовать для другого объекта. то прежний объект никуда не денется и будет продолжать "жить", пока его не удалит "сборщик мусора" - это такой механизм в python, следящий за "брошенными" объектами, на которые нигде не ссылаются. Потому термин "обнуление" множества, которым Вы пользуетесь, в этом случае некорректен - я про это). "my_set_num = set()" - это операция создания нового объекта "пустое множество" под именем "my_set_num". Ваши два примера демонстрируют: в первом Вы в цикле for сохраняете ссылку "my_set_num" на объект, созданный вне цикла, а во втором Вы ссылку "my_set_num" в цикле используете каждый раз для нового объекта. Все предыдущие объекты под именем "my_set_num" будут "жить" и ждать "сборщика мусора", но доступа к ним у Вас уже не будет(
Людмила Уровень 11
29 марта 2026
"Потому термин "обнуление" множества, которым Вы пользуетесь, в этом случае некорректен - я про это). " Да, с этим согласна. Спасибо, Евгений за подробное объяснение !
neubah neubah Уровень 23
6 февраля 2026

my_list = [1, 2, 2, 3, 4, 4, 5]
my_set = set(my_list)
print(my_set)  # Вывод: {1, 2, 3, 4, 5}
почему во всех примерах в этой теме вывод каждый раз "по порядку"?
EvgenyXIV Уровень 31
17 марта 2026
Элементы хешированной коллекции будут выводится согласно номерам ячеек в хеш-таблице, в которых хранятся их хеши. Хеши натуральных чисел совпадают с числами (кроме -1) в стандартном python.А номера ячеек в хеш-таблице определяются её размером . В этих примерах - это просто совпадение номеров ячеек хешей со значениями чисел для небольших целых, пока не произошло динамическое изменение заданного размера хеш-таблицы при её создании (если размер хеш-таблицы больше значений чисел в коллекции) - поэтому и упорядоченный вывод получается. Но это редкий случай - попробуйте добавить в список к-н двузначное число или ко всем цифрам списка добавить, например,по пять нулей и упорядоченность элементов в выводе поменяется, скорее всего...
Анатолий Уровень 63
26 января 2026
❤️
Vlad Уровень 1
25 сентября 2025
О второй задаче - Я сначала подзабыл что цикл между итерациями не запоминает информацию - То что было в первой итерации не будет известно во второй Так что мое первое решение образовало самого настоящего монстра. Я знал что я ошибаюсь, но хотел посмотреть как меня отругает проверка😁

while_working = True

user_set = set()
set1 = set()
set2 = set()
set3 = set()
set4 = set()
set5 = set()
set6 = set()

while while_working:
    user_input = input()
    
    if user_input == "":
        while_working = False
    
    if len(set1) != 1:
        set1.add(user_input)
        user_set.update(set1)
    elif len(set2) != 1:
        set2.add(user_input)
        user_set.update(set2)
    elif len(set3) != 1:
        set3.add(user_input)
        user_set.update(set3)
    elif len(set4) != 1:
        set4.add(user_input)
        user_set.update(set4)
    elif len(set5) != 1:
        set5.add(user_input)
        user_set.update(set5)
    elif len(set6) != 1:
        set6.add(user_input)
        user_set.update(set6)
        
print(user_set)
Ilya Shalaev Уровень 10
12 октября 2025
мне даже читать это лень ,а ты сидел и делал это ахахаха
Сергей Шимко Уровень 10
26 октября 2025
мой вариант немного компактнее:

set1 = set()
for i in range(5):
    set_i = set((int(input(f"Введите {i + 1} число: ")),))
    set1.update(set_i)
print(set1)
Anton Уровень 1
2 сентября 2025
set1 = set() for _ in range(1,6): my_set = {input("Введите число: ")} set1.update(my_set) print(set1)
Anton Уровень 1
2 сентября 2025
from random import randint list1 = [randint(0,99) for _ in range(randint(10,20))] list2 = [randint(50,125) for _ in range(randint(10,20))] set1 = set(list1) set2 = set(list2) set3 = set1 | set2 print(len(set3), set3)
Antl N Уровень 14
24 июля 2025
Вводные данные для второй задачи написаны коряво. "Программа должна создавать отдельное множество для каждого введенного пользователем числа." - Что такое отдельное множество? По факту решается через одно множество, которое перезаписывается в цикле.
EvgenyXIV Уровень 31
17 марта 2026
"перезаписываться" будет только первое множество, а в цикле надо к нему апдейтить каждый раз новое множество
DKlaim Уровень 14
1 июля 2025
Вопрос к первой задаче - Какое количество элементов в списках должно быть? Тоже случайное?
Роман Уровень 37
28 августа 2025
Задача про списки от 0 до 99 и 50 до 125 это трэш. Методом подбора нашел количество элементов второго списка, причем количество первого никак не проверяется. Непонятно, то ли я обманул проверку. то ли она меня. 12 попыток!!!