Back to questions
Middle
10
Как удалить элементы из списка в цикле?
Companies where asked
ИП Ганус Александр Андреевич
Answer from AI
sobes.tech AI
Удалять элементы из списка во время итерации по нему напрямую опасно, так как это может привести к пропуску элементов или ошибкам индексации. Чтобы корректно удалить элементы, можно:
- Итерация по копии списка и удаление из оригинала:
lst = [1, 2, 3, 4, 5]
for item in lst[:]: # копия списка
if item % 2 == 0:
lst.remove(item)
print(lst) # [1, 3, 5]
- Использовать генератор списков для создания нового списка без ненужных элементов:
lst = [1, 2, 3, 4, 5]
lst = [x for x in lst if x % 2 != 0]
print(lst) # [1, 3, 5]
- Итерация в обратном порядке по индексам (если нужен именно in-place):
lst = [1, 2, 3, 4, 5]
for i in range(len(lst) - 1, -1, -1):
if lst[i] % 2 == 0:
del lst[i]
print(lst) # [1, 3, 5]
Выбор метода зависит от задачи и требований к производительности.