Почему удаляются не все объеты класса Int?
Модифицировать список во время итерации по нему - плохая идея
['a', 1, 2, 'c']
После того как ты удалил 1, 2 встанет на его место. Но этот элемент уже был обработан, и цикл пойдёт дальше, к 'c'.
Если тебе нужно удалять элементы из списка в процессе итерации, итерируйся начиная с конца. Тогда будет меняться только позиция уже обработанных элементов.
И делай итерацию не напрямую по списку, а по индексу.