TypeError: 'int' object is not iterable при попытке посчитать нули в списке

Код:

def move_zeros(array):
    a = array.count(0)
    for i in a:
        array.remove(0)
        array.append(0)
    return array

Вопрос: При попытке пересчитать количество нулей в списке array программа выдаёт ошибку:

for i in a:
TypeError: 'int' object is not iterable

Ответы (1 шт):

Автор решения: Евгений
a = array.count(0) # a - число. Количество нулей в массиве
for i in a: # у числа нет итератора
    # do smth

Если вам нужно a раз пройти цикл, используйте функцию range:

a = array.count(0) # a - число
for i in range(a):
    # do smth

А вообще для фильтрации нулей лучше воспользоваться функцией filter:

>>> def cls(array):
...   count = array.count(0)
...   return list(filter(lambda x: x != 0, array)) + [0]*count
...
>>> cls([0, 1, 1, 2, 0, 3, 5, 0, 7, 2])
[1, 1, 2, 3, 5, 7, 2, 0, 0, 0]
→ Ссылка