Что выведет код Middle Коллекции обновлено
Удаление из списка в цикле
Вопрос
Что выведет код? По строке на каждый print.
nums = [1, 2, 2, 3, 4, 4]
for n in nums:
if n % 2 == 0:
nums.remove(n)
print(nums)
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: [1, 2, 3, 4]. Итератор списка идёт по индексу.
Что выведет
[1, 2, 3, 4]
Разбор
Итератор списка идёт по индексу. Удаление элемента сдвигает хвост влево, и следующий элемент пропускается. На индексе 1 встретили 2 и удалили его, на место встала вторая 2, но итератор перешёл к индексу 2 (3). Затем 4 на индексе 3 удалена, вторая 4 сдвинулась на её место и снова пропущена. Остаётся [1, 2, 3, 4]. Правильно: nums = [n for n in nums if n % 2].
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.