Sobes.tech
Назад к вопросам
Middle
11

Как удалить элементы из списка в цикле?

Компании, где спрашивали
ИП Ганус Александр Андреевич

Ответ от нейросети

sobes.tech AI

Удалять элементы из списка во время итерации по нему напрямую опасно, так как это может привести к пропуску элементов или ошибкам индексации. Чтобы корректно удалить элементы, можно:

  1. Итерация по копии списка и удаление из оригинала:
lst = [1, 2, 3, 4, 5]
for item in lst[:]:  # копия списка
    if item % 2 == 0:
        lst.remove(item)
print(lst)  # [1, 3, 5]
  1. Использовать генератор списков для создания нового списка без ненужных элементов:
lst = [1, 2, 3, 4, 5]
lst = [x for x in lst if x % 2 != 0]
print(lst)  # [1, 3, 5]
  1. Итерация в обратном порядке по индексам (если нужен именно 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]

Выбор метода зависит от задачи и требований к производительности.