Когда вы изменяете коллекцию, которую вы итерируете, итератор может вести себя неожиданно, например, пропускать элементы или возвращать один и тот же элемент дважды.
Этот код бесконечно циклически выполняется при запуске:
>>> a = [ 'foo', 'bar', 'baz' ]
>>> for x in a:
... if x == 'bar': a.insert(0, 'oops')
Это потому, что итератор использует индекс, чтобы отслеживать, где он находится в списке. Добавление элемента в начале списка приводит к тому, что элемент «bar» возвращается снова, вместо того, чтобы итератор переходил к следующему элементу.