Просто хотел опубликовать альтернативу, которая могла бы быть более общей для использования. Большинство существующих решений используют индекс цикла, чтобы избежать этого. Но вам не нужно использовать индекс - ключ в том, что в отличие от цикла for, где переменная цикла скрыта, переменная цикла доступна.
Вы можете делать очень похожие вещи с итераторами / генераторами:
x = [1,2,3,4,5,6]
xi = iter(x)
ival = xi.next()
while not exit_condition(ival):
# Do some ival stuff
if ival == 4:
xi = iter(x)
ival = xi.next()
Это не так чисто, но все еще сохраняет возможность записи в сам итератор цикла.
Обычно , когда вы думаете, что хотите это сделать, ваш алгоритм неверен, и вы должны переписать его более аккуратно. Вероятно, вы действительно хотите использовать генератор / сопрограмму вместо этого. Но это по крайней мере возможно.