А вот так не быстрее будет?
(Пример специально усложнил)
lst=[5, 3, 0, 2, 0, 3, 8, 2, 9, 7, 0, 0,7,1, 5, 3]
l=[i for i,v in enumerate(lst) if v == 0]
m_l=[]
for i,ls in enumerate(lst):
m=len(lst)
for j in l:
if m>abs(i-j):
m=abs(i-j)
m_l.append(m)
print (m_l)
Результат:
[2, 1, 0, 1, 0, 1, 2, 3, 2, 1, 0, 0, 1, 2, 3, 4]
Если надо еще ускорить - можно порождать список m_l сразу, т.е.
m_l=[len(lst)]*len(lst)
и
m_l.append(m)
заменить на
m_l[i]=m
За счет статики работы с списком должно бы получиться еще быстрее.