Удаление нужных элементов из списка

Имеется список list_of_elements, а также список булевых значений del_mapper. Требуется из списка list_of_elements удалить те значения, по индексам которых в списке del_mapper стоит True. То есть нужно удалить из списка list_of_elements первый и третий элементы.

list_of_elements = [1, 2, 4, 2, 12, 83]
del_mapper = [True, False, True]
result = [2, 2, 12, 83]

Как этого добиться, не создавая промежуточных списков и просто из списка list_of_elements получить нужный результат видоизменив его содержимое?


Ответы (1 шт):

Автор решения: gil9red

не создавая промежуточных списков и просто из списка list_of_elements получить нужный результат видоизменив его содержимое

Шаги:

  • Перебор индексов del_mapper в обратном порядке, чтобы при удалении элементов list_of_elements порядок индексов оставался актуальным
  • Проверка значения флага del_mapper[i]
  • Возможно, понадобится добавить проверку i -- чтобы не было выхода за пределы list_of_elements

Попробуйте:

list_of_elements = [1, 2, 4, 2, 12, 83]
del_mapper = [True, False, True]

for i in reversed(range(len(del_mapper))):
    if del_mapper[i]:
        list_of_elements.pop(i)

print(list_of_elements)
# [2, 2, 12, 83]
→ Ссылка