Для этого цикла, этот код:
lst = ['NORTH', 'SOUTH', 'EAST', 'EAST']
for num in range(0, len(lst) - 1):
if lst[num] == 'NORTH' and lst[num + 1] == 'SOUTH':
del lst[num]
del lst[num - 1]
Я знаю, что это не работает, потому что, удаляя элементы в списке, изменяется длина (lst), однако, почему это работает:
for num in range(len(lst) - 1 , -1 , -1):
if lst[num] == 'SOUTH' and lst[num - 1] == 'NORTH':
del lst[num]
del lst[num - 1]
для этого, разве мы не меняем длину списка? Почему длина списка не имеет значения в обратном диапазоне?