bucksbunny
@bucksbunny
Гуру бытия, философ, прокрастинатор, авантюрист

Как исправить код для решения задачи?

Знатоки, подскажите, пожалуйста, где у меня ошибка в коде...
Суть задачи: Написать функцию modify_list(l), которая принимает на вход список целых чисел, удаляет из него все нечётные значения, а чётные нацело делит на два. Функция не должна осуществлять ввод/вывод информации, требуется только изменение переданного списка.
Мой код:
def modify_list(l):
    for i in range(len(l)):
        if i % 2 == 1:
            l.remove(l[i])
        elif i % 2 == 0:
            i = l.append(l[i//2])
    return (l)

Просьба не присылать другие решения, а исправить именно данный фрагмент.
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Нужно быть осторожным при переборе индексов списка и его одновременном изменении. Если ты удалил элемент - индексы последующих "съедут" влево, к нулю, и при обычном переборе ты пропустишь элемент сразу за удалённым.
Хорошее решение - перебирать элементы в обратном порядке, тогда "съедут" индексы уже обработанных элементов.
for i in range(len(l)-1, -1, -1):
  if l[i] % 2 == 0:
    l[i] = l[i] / 2
  else:
    del l[i]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы