#!/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.