2014-01-10 7 views
0

Как я могу сделать это в Python:как перезапустить цикл for for python?

x = [1,2,3,4,5,6] 
for i in x: 
    if i == 4: 
     -restart the loop from beginning- 
    else: 
     print i 

Так вот он будет печатать до 4, затем повторите цикл

+0

что вы имеете в виду под 'повторить'? вы имеете в виду печать (1,2,3,4,1,2,3,4) и т. д.? –

+1

Я бы использовал рекурсивную функцию, определяющую цикл как функцию – freude

+0

Я бы использовал ['itertools.cycle'] (http://docs.python.org/2/library/itertools.html#itertools.cycle). – kojiro

ответ

7

Что об этом:

x = [1,2,3,4,5,6] 
restart = True 
while restart: 
    for i in x: 
     # add any exit condition! 
     # if foo == bar: 
     # restart = False 
     # break 
     if i == 4: 
      break 
     else: 
      print i 
0

Нечто подобное возможно? Но это будет цикл навсегда ...

x = [ ..... ] 
restart = True 
while restart: 
    for i in x: 
     if i == 4: 
      restart = True 
      break 
     restart = False 
     print i 
-4

Я хотел бы использовать рекурсивную функцию для этого

def fun(x): 
    for i in x: 
     if i == 4: 
      fun(x) 
     else: 
      print i 
    return; 

x = [1,2,3,4,5,6] 
fun(x) 
+4

Вы очень быстро получите 'RuntimeError' за превышение максимального предела рекурсии. По умолчанию используется значение «1000». –

+0

Сколько раз автор хочет повторить? – freude

+0

Рекурсивные функции опасны для высоких значений рекурсии и очень сложно интегрировать условия выхода. –

2

Вы не можете напрямую. Используйте itertools.cycle

for idx, val in enumerate(itertools.cycle(range(4))): 
    print v 
    if idx>20: 
     break 

IDX используется для разрыва infiniteloop

0

Просто заверните в то время как заявление.

while True: 
    restart = False 
    for i in x: 
     if i == 4: 
      restart = True 
      break 
     else: 
      print i 
    if not restart: 
     break 
0

с петлей в то время:

x=[1,2,3,4,5,6] 
i=0 
while i<len(x): 
    if x[i] == 4: 
     i=0 
     continue 
    else: 
     print x[i] 
    i+=1 
Смежные вопросы