Если рассуждать из твоего кода, насколько я догадываюсь, то к примеру во время цикла for есть итерация к примеру вторая и после неё условный оператор if к примеру истинный, тогда из b удаляется переменная, количество переменных становится меньше, но for пропускает в таком случае число
Не изменяйте список внутри цикла обхода ТОГО же списка
Вы удаляете элементы списка при проходе по нему же
Это некорректно во всех языках, даже чисто по логике