Два del подряд
Исполните следующую программу. Совпадает ли результат с тем, чего вы ожидали? Внесите минимальные исправления, чтобы результатом её выполнения стала печать списка ['red', 'orange', 'green', 'blue', 'purple', 'magenta'].
Код
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'purple', 'brown', 'magenta']
del colors[2]
del colors[6]
print(colors)- Формат выходных данных
- Список из шести цветов.
['red', 'orange', 'green', 'blue', 'purple', 'magenta']Подсказка 1
Убрать нужно yellow и brown. Первое удаление верное — посмотрите, что стало со списком после него.
Подсказка 2
После первого del все элементы правее сдвинулись на одну позицию влево, и brown оказался не под шестым индексом, а под пятым.
Разбор
del colors[2]убираетyellow— это верно.- В получившемся списке
brownстоит под индексом 5, а не 6. del colors[6]в исходном коде удаляетmagenta— не тот цвет.
Решение
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'purple', 'brown', 'magenta']
del colors[2] # убрали yellow — остальные сдвинулись влево
del colors[5] # было colors[6]: brown теперь под пятым индексом
print(colors)Это главная ловушка удаления по индексу: индексы «плывут» после каждого del. Когда удалений несколько, надёжнее идти с конца — тогда сдвиг не затрагивает ещё не удалённые элементы.


