Sobes.tech
Middle

Comment supprimer des éléments d'une liste dans une boucle?

sobes.tech IA

Réponse de l'IA

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

  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]

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