Когда вы перебираете список, вы ссылаетесь на каждое смещение, а не на каждое значение. Например, когда вы получите первый результат, если он квалифицирует и удаляет значение, все последующие значения сдвигаются вперед и ваши смещения увеличиваются. Ваше смещение теперь равно индексу 1 (база 0). Но вы только что удалили индекс 0, и все переместилось вперед Вы по сути пропустили второе число.
0$ python3
Python 3.4.8 (default, Mar 23 2018, 10:04:27)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> [a for a in range(1, 20)]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> the_list = [a for a in range(1, 20)]
>>> for a in the_list:
... the_list.remove(a)
...
>>> the_list
[2, 4, 6, 8, 10, 12, 14, 16, 18]
>>>