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]