Почему удаление элементов из списка в цикле for в Python пропускает значения?Python

Программы на Python
Anonymous
Почему удаление элементов из списка в цикле for в Python пропускает значения?

Сообщение Anonymous »

Я новичок в Python и пытаюсь написать скрипт, который удаляет все четные числа из списка. Моя логика заключалась в том, чтобы пройтись по списку и удалить его, если число делится на 2.
Вот мой код:

Код: Выделить всё

numbers = [1, 2, 4, 5, 6, 8, 9]

for num in numbers:
if num % 2 == 0:
numbers.remove(num)

print(numbers) # Ожидаемый результат: [1, 5, 9]
Проблема:
Вместо ожидаемого [1, 5, 9] я получаю [1, 4, 5, 8, 9]. По какой-то причине программа "пропускает" некоторые числа (например, 4 и 8), хотя они явно четные.
Что я пробовал:
Я проверял условие if num % 2 == 0: отдельно; работает корректно.
Я заметил, что если в списке нет последовательных четных чисел, код иногда работает, но я не уверен.
Скажите, пожалуйста, почему итерация ведет себя так странно и как правильно удалять элементы из списка, не прерывая цикл? Заранее спасибо!

Вернуться в «Python»