Улучшить алгоритм Python
Помогите, пожалуйста, улучшить код по алгоритмической задаче на python.
Требования задачи коротко: дан массив длиной n. В массиве встречаются встречаются точки между которыми нужно рассчитать расстояние. В условии задачи это нули. Если кратко, то есть набор чисел: 4, 5, 0, 3, 2, 0, а должно на выходе быть 2, 1, 0, 1, 1, 0.
Преподаватель сказал сделать решение путем срезов. Создаем массив нулей и двигаясь по нему вперед увеличиваем значение 0, 1, 2, 3, 4, 5 и т.д. потом доходим до нуля и вспоминаем, какой индекс был у прежнего нуля (его стоит хранить) и делаем обратный срез, т.е. перезаписываем данные. После этого вновь меняем индекс нуля и двигаемся дальше.
Мой код:
def distance(count, list):
result = [0] * count
point = None
for index, value in enumerate(list):
if value == '0':
if point is None:
point = index
if index == 0:
continue
else:
result[:index] = result[(index - 1)::-1]
else:
middle = (len(result[point:index])) // 2
result[(index - middle):index] = result[(point + middle):point:-1]
point = index
else:
result[index] = (index + 1) if point is None else (result[index - 1] + 1)
return result
Проблема в том, что у меня есть отдельное условие, что делать есть ноль встречается первым. Если его не поставить, вполне ожидаемо в результате список добавит себе в конец нулей на длину списка, ведь я обращаюсь к предыдущему индексу от нуля. Преподаватель пишет, что если чуть изменить строку
result[:index] = result[(index - 1)::-1]
то от условия можно будет избавиться.
Я совсем не понимаю как.