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

Удаление элементов

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

6.1 Функции remove() и discard()

Множества в Python предоставляют несколько способов удаления элементов. Ниже мы рассмотрим методы remove(), discard(), pop(), clear(), а также использование оператора del для удаления множества целиком. Каждый метод имеет свои особенности и применения.

Два самых распространенных способа удаления элементов — это методы remove() и discard().

Метод remove()

Метод remove() удаляет указанный элемент из множества. Если элемент не существует в множестве, возникает ошибка KeyError.


my_set = {1, 2, 3, 4, 5}
my_set.remove(3)
print(my_set)  # Вывод: {1, 2, 4, 5}
            
# Если элемента нет в множестве, возникает ошибка
my_set.remove(6)  # KeyError: 6
        

Метод discard()

Метод discard() также удаляет указанный элемент из множества, но, в отличие от remove(), он не вызывает ошибку, если элемента нет в множестве.


my_set = {1, 2, 3, 4, 5}
my_set.discard(3)
print(my_set)  # Вывод: {1, 2, 4, 5}
            
# Если элемента нет в множестве, ошибки не будет
my_set.discard(6)
print(my_set)  # Вывод: {1, 2, 4, 5}
        

6.2 Функции pop() и clear()

Еще часто используют такие функции как pop() и clear()

Метод pop()

Метод pop() удаляет и возвращает случайный элемент из множества. Если множество пустое, возникает ошибка KeyError.


my_set = {1, 2, 3, 4, 5}
removed_element = my_set.pop()
print(removed_element)   # Вывод: Один из элементов множества, например, 1
print(my_set)  # Вывод: Оставшиеся элементы множества, например, {2, 3, 4, 5}
            
# Если множество пустое, возникает ошибка
empty_set = set()
empty_set.pop()  # KeyError: 'pop from an empty set'
        

Пример: Удаление всех элементов из множества с помощью pop()

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


my_set = {1, 2, 3, 4, 5}
print("Исходное множество:", my_set)
            
while my_set:
    removed_element = my_set.pop()
    print(f"Удален элемент: {removed_element}, Оставшиеся элементы: {my_set}")
            
print("Множество пустое:", my_set)
        

Вывод


Исходное множество: {1, 2, 3, 4, 5}
Удален элемент: 1, Оставшиеся элементы: {2, 3, 4, 5}
Удален элемент: 2, Оставшиеся элементы: {3, 4, 5}
Удален элемент: 3, Оставшиеся элементы: {4, 5}
Удален элемент: 4, Оставшиеся элементы: {5}
Удален элемент: 5, Оставшиеся элементы: set()
Множество пустое: set()
        

Метод clear()

Метод clear() удаляет все элементы из множества, делая его пустым.

Пример


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

6.3 Использование оператора del

Оператор del в Python используется для удаления объектов. При работе с множествами оператор del может применяться для удаления самого множества целиком, освобождая память. Ниже будет пара примеров использования оператора del для работы с множествами.

Удаление множества

Когда оператор del используется для удаления множества, это множество больше не существует, и все его элементы удаляются из памяти


my_set = {1, 2, 3, 4, 5}
print("Исходное множество:", my_set)
            
# Удаление множества
del my_set
            
# Попытка доступа к удаленному множеству вызовет ошибку
# print(my_set) # NameError: name 'my_set' is not defined
        

В этом примере множество my_set удаляется с помощью оператора del. После этого любая попытка доступа к my_set вызовет ошибку NameError, поскольку объект больше не существует.

2
Задача
Модуль 1: Python Core, 6 уровень, 5 лекция
Недоступна
Котовасия
Котовасия
2
Задача
Модуль 1: Python Core, 6 уровень, 5 лекция
Недоступна
Фруктовица
Фруктовица
Комментарии (25)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Stanislav Уровень 10
24 августа 2026

cats_set = set(['БАРСИК', 'МУРЗИК', 'ПУШОК', 'КУЗЯ', 'РЫЖИК'])
i = 0

def get_suffix(n):
    if 11 <= n % 100 <= 19:
        return "ок"
    last = n % 10
    if last == 1:
        return "ку"
    if 2 <= last <= 4:
        return "ки"
    return "ок"

while True:
    cat = input("Угадайте имя кота: ").upper()

    if cat.lower() == "стоп":
        print(f'Спасибо за игру)\nВы совершили {i} попыт{get_suffix(i)}')
        break

    i += 1
    suffix = get_suffix(i)

    if cat in cats_set:
        cats_set.remove(cat)
        print(f'Отлично! Осталось угадать {len(cats_set)} имени\nВы совершили {i} попыт{suffix}'
              f'\nНапишите "стоп" для завершения игры')
        if len(cats_set) == 0:
            print(f'Все коты угаданы. Поздравляю!'
                  f'\nВы завершили игру за {i} попыт{suffix}')
    else:
        print(f'Не угадали, попробуйте еще раз...'
              f'\nВы совершили {i} попыт{suffix}\nНапишите "стоп" для завершения игры')
Svitlana Уровень 11
28 июля 2026
cat_names = {"Сніжок", "Маркіза", "Мурзік", "Сімба", "Пушок"} attempts = 0 while len(cat_names) != 0: user_guessing = input(f"Угадай імʼя кота: ") attempts += 1 if user_guessing in cat_names: cat_names.discard(user_guessing) print("Ти вгадав!") else: print("Такого імені немає.") print(f"Імена було вгадано за {attempts} спроб")
PaPaY Уровень 13
22 марта 2026

fruits_set = {"Яблуко","Банан","Груша","Слива","Вишня"}
user_fruit = input("Введіть фрукт: ").capitalize()
fruits_set.discard(user_fruit)
print(fruits_set)
PaPaY Уровень 13
22 марта 2026

cat_set = {"Rex","Tom","Garfield","Archi","Shani"}
user_input = 0

print("Игрок должен пытаться угадать их. Когда он угадывает имя кота, оно удаляется из множества")
print("Цель игры - угадать всех котов за как можно меньшее число попыток.")

while cat_set:
    user_try = input("Введите имя кота: ").capitalize()
    if user_try not in cat_set:
        print(f"Такого имени нет у множестве, осталось имен {len(cat_set)},использавано попиток: {user_input+1}")
        user_input += 1
    else:
        cat_set.remove(user_try)
        print(f"Поздравляю!!!Имя {user_try} есть и оно удалено, осталось имен {len(cat_set)}, использовано попыток {user_input+1}")
        user_input += 1
print(f"Поздравляю ти виграл!!! Тебе понадобилось {user_input} попыток")
Danil Уровень 15
31 января 2026
fruit_set = {"Яблоко", "Банан"} fruit = input() fruit_set.discard(fruit) print(fruit_set)
23 октября 2025

name_set = {'Мурзик', 'Вася', 'Степаша', 'Барсик', 'Василиса'}
сount_chance = 0

while name_set:
    user_input_name = input('Введите предполагаемое имя кота: ').capitalize()
    сount_chance += 1

    if user_input_name in name_set:
        name_set.remove(user_input_name)
        print(f'Верно! Осталось угадать {len(name_set)} кот(ов).')
    else:
        print('Такого имени нет! Попробуйте ещё раз.')
        
print(f'Ура! Все коты угаданы. Потребовалось {сount_chance} попыток.')
DmUr Уровень 16
1 августа 2025
В Python 3.12 - Метод pop() удаляет и возвращает случайный постоянно первый элемент из множества.

for i in range(500):
    my_set = {1, 2, 3, 4, 5}
    removed_element = my_set.pop()
    print(f"Попытка: {i+1}, Удален: {removed_element}, Осталось: {my_set}" )    

Результат: Попытка: 1, Удален: 1, Осталось: {2, 3, 4, 5} Попытка: 2, Удален: 1, Осталось: {2, 3, 4, 5} Попытка: 3, Удален: 1, Осталось: {2, 3, 4, 5} Попытка: 4, Удален: 1, Осталось: {2, 3, 4, 5} Попытка: 5, Удален: 1, Осталось: {2, 3, 4, 5} Попытка: 6, Удален: 1, Осталось: {2, 3, 4, 5} ....... Попытка: 289, Удален: 1, Осталось: {2, 3, 4, 5} Попытка: 290, Удален: 1, Осталось: {2, 3, 4, 5} Попытка: 291, Удален: 1, Осталось: {2, 3, 4, 5} Попытка: 292, Удален: 1, Осталось: {2, 3, 4, 5} Попытка: 293, Удален: 1, Осталось: {2, 3, 4, 5} ............. Попытка: 497, Удален: 1, Осталось: {2, 3, 4, 5} Попытка: 498, Удален: 1, Осталось: {2, 3, 4, 5} Попытка: 499, Удален: 1, Осталось: {2, 3, 4, 5} Попытка: 500, Удален: 1, Осталось: {2, 3, 4, 5}
EvgenyXIV Уровень 31
20 марта 2026
Это из-за хешей в хеш-таблице для элементов множества. pop() обходит элементы множества в порядке таблицы хешей, а для целых чисел хеши совпадают с числами, а при малых целых и индексы хешей в таблице совпадают с числами, если размер множества небольшой - т.е. первым удалённым элементом будет наименьший в множестве целых - у тебя это единица. Поставь её последней - всё равно удалится первой)
shinobi Уровень 20
25 июля 2025
Во второй задаче валидатор хромает, надо чинить. Мой код:

fruits = {"apple", "banana"}
while fruits:
    x = input("fruit: ")
    if x in fruits:
        fruits.discard(x)
        print(fruits)
Мой код продолжает работать, даже если пользователь ввёл неверный фрукт, и просто спрашивает заново название, поскольку инпут находится в while, а while работает пока множество не пустое. Но валидатор с этим не согласен, и почему то считает, что программа перестаёт выполняться, если фрукта нет. И да, я знаю, можно убрать if вообще, но суть не в этом, а в том, что валидатор неправ.
shinobi Уровень 20
25 июля 2025
И сразу добавлю вторую ошибку, не знаю в валидаторе самом или условии, но вот такой код ПРОХОДИТ валидатор

fruits = {"apple", "banana"}
while fruits:
    x = input("fruit: ")
    fruits.discard(x)
    print(fruits)
НО откройте картинку мою выше с условиями, где написано, что множество должно выводиться "Обновлённое", в моём же коде множество выводится в любом случае, даже если пользователь ввёл неверно и ничего не удалил, т.е. старое множество, а не "обновленное", но валидатор задачу пропустил, а значит либо ошибка валидатора,либо условия. Уважаемый автор курса, закончу я свой комментарий такими словами: Либо штаны наденьте, либо крестик снимите!
Anonymous #1 Уровень 1
12 февраля 2026
я добавил "хрен" и валидатор пропустил)) видимо поправили, чтоб валидатор проверял только код, а не правописание, знание ботаники и тд и тп, как это было раньше
Олег Никулин Уровень 69
22 марта 2025
Котовасия при запуске пишет: Проверьте ваш код, похоже вы используете бесконечный цикл Но проверку проходит..
Denis Shutov Уровень 9
4 августа 2025
Потому что имена, которые ты задаешь, могут не совпадать с введенными "пользователем". Но т.к. программа написана верно, валидатор пропускает её
Anonymous #2923722 Уровень 17
29 января 2025
описание первой задачи конечно отвратительно составлено. при модерации проверяется наличие распечаток в разных ветках алгоритма, но об их обязательном наличии ни слова. печатать количество попыток при проверке подсказывают то общее, то успешные. в общем - не доработанное условие