2016-06-07 4 views
0

Учитывая список: a = [1, 2, 3, 4 5] в цикле for, предположим, что текущий элемент равен 2, а следующий элемент равен 3. Если какое-то условие истинно, как я могу сделать следующий элемент будет снова 2, что означает, что итерация должна продолжаться от 2 снова вместо 3?python - Как переместить итерацию в список циклов

a = [1, 2, 3, 4, 5] 

for item in a: 
    print item 
    if condition: 
     do something, and go back to previous iterator 

Выход будет:

1 
2 
2 
3 
4 
5 
+0

Решение этого дубликата совершенно бесполезно, поскольку оно касается механики итераторов в целом. Для списка это можно легко сделать с помощью цикла while, а не 'for'. –

+1

Что ты имеешь в виду? От чего зависит условие? Вам нужно достичь 3, чтобы определить, что вам нужно снова использовать 2? –

+0

[См. Здесь] (http://stackoverflow.com/questions/2777188/making-a-python-iterator-go-backwards), если это то, о чем вы просите. – ninehundred

ответ

1

Остерегайтесь бесконечного цикла, и это не очень Pythonic.

i = 0 
a = [1, 2, 3, 4, 5] 
hasBeenReset = False 
while i < len(a): 
    if a[i] == 3 and not hasBeenReset: 
     i = 1 
     hasBeenReset = True 
    print(a[i]) 
    i += 1 
+0

Этот код представляет собой бесконечный цикл. –

+1

Я обновился, чтобы сделать вывод так же, как в примере в исходном вопросе. – dyagmin

Смежные вопросы