Не совсем уверен в его элегантности / эффективности, но вот ваше решение:
list_a = [0,0,0,0,0,0,0,0,0,1,2,3,4,0,0,0,0,1,2,0,0,0,0,1,2,3,4,5,0,0,0]
list_b = []
reverse_list = []
for i in list_a:
if i == 0:
if reverse_list:
list_b += reverse_list[::-1]
reverse_list.clear()
list_b.append(i)
else:
reverse_list.append(i)
# If list ended without encountering zero
list_b += reverse_list[::-1]
print(list_a)
print(list_b)
Выходные данные как:
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 1, 2, 3, 4, 5, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 2, 1, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 5, 4, 3, 2, 1, 0, 0, 0]