Как записать часть кода, используя функцию enumerate?
def distance(num, blueprint):
step = None
for i in range(num):
if blueprint[i] == 0:
step = 0
elif step is not None:
step +=1
blueprint[i] = step
else:
blueprint[i] = float('inf')
for i in range(num)[::-1]:
if blueprint[i] == 0:
step = 0
else:
step +=1
blueprint[i] = min(blueprint[i], step)
return blueprint
if __name__ == '__main__':
num = int(input())
blueprint= list(map(int, input().split()))
print(*distance(num, blueprint))
нужно записать часть кода, используя функцию enumerate
for i in range(num):
if blueprint[i] == 0:
step = 0
elif step is not None:
step +=1
blueprint[i] = step
else:
blueprint[i] = float('inf')
Ответы (1 шт):
Автор решения: MarianD
→ Ссылка
Предпологая, что num == len(blueprint), вместо
for i in range(num):
if blueprint[i] == 0:
step = 0
примените
for i, bl in enumerate(blueprint):
if bl == 0:
step = 0
Но в вашем частном случае никакого преимущества в применении функции enumerate() я не вижу, т.к в этом цикле вы всё равно вынужден обращаетесь прямо к элементам списка blueprint, чтобы изменить их значение.