#!/usr/bin/env python3
def move_zeros(array):
others = [x for x in array if x != 0]
print(others) # [1, 1, 2, 1, 3, 'a']
print(move_zeros([False,1,0,1,2,0,1,3,"a"]))others = [x for x in array if isinstance(x, int) and x != 0] False от 0 и True от 1 -- используйте оператор is вместо !=.== и != проверяют равенство значений двух объектов. Но из-за особенностей реализации, у False и 0 -- одно и тоже значение, а у True и 1 -- одно и тоже другое значение.is проверяет равенство id двух объектов. Булевы объекты True и False -- это синглтоны, т.е. существуют в программе не более, чем в 1 экземпляре. Поэтому, у всех True -- один и тот же id, а у всех Fasle -- один и тот же другой id.