Удаление из списка элементов больше 5
Пытаюсь удалить из списка все элементы больше 5, но почему-то код не работает.
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
for i in foo:
if i > 5:
foo.remove(i)
print(foo)
Как это исправить?
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Много раз этот вопрос тут обсуждался. Удаление элементов из списка, по которому вы итерируетесь, ломает итерацию, она "проскакивает" элементы, следующие за удаляемыми. Одно из простых решений - итерироваться по копии списка:
for i in foo.copy():
^^^^^^^
Но более питонично всё же формировать новый список, фильтруя элементы.