Я думаю, я нашел, почему ваш метод не работает. Проблема заключается в том, как вы выполняете итерацию.
В вашем примере ваша функция работает для arr = [0,1,0,3,12]
, но не для вашего второго массива arr2 = [0,0,2]
и возвращает [0,2]
. Тогда интересно исследовать один факт: во втором примере у вас есть два последовательных нулей.
Посмотрите на этот код и попробуйте выполнить it:
for i in arr:
print('i = '+str(i))
if(i == 0):
arr.remove(i)
С вашим первым массивом вы заметили, что ваш вывод - тот, который вы ожидали, но это повезло. На самом деле, если вы запустите приведенный выше код, вы увидите, что он печатает в вашей консоли:
> i = 0
> i = 0
> i = 12
Итак, на самом деле это означает, что ваш оператор remove
изменяет массив, который вы повторяете , После удаления вы пропускаете элемент в своем массиве.
Это означает, что вы должны предпочесть другой путь, такой как предложенный в комментариях.
Надеюсь, это поможет