2010-02-02 2 views
24

Как мне оставить петлю на ранней стадии python?Python Leave Loop Early

for a in b: 
    if criteria in list1: 
     print "oh no" 
     #Force loop i.e. force next iteration without going on 
    someList.append(a) 

Кроме того, в Java вы можете break из цикла, есть эквивалент в Python?

+5

Не используйте 'list' как имя переменной. Он скрывает встроенный. –

ответ

42

continue и break - это то, что вы хотите. В этом отношении Python работает одинаково с Java/C++.

+2

Случайное любопытство; вы «Max_aka_NOBODY» с форумов Bethesda? У вас есть один и тот же аватар, поэтому мне было интересно. – Yacoby

+2

Действительно я. : D –

15

Во-первых, имейте в виду, что возможно сделать то, что вы хотите, с пониманием списка. Таким образом, вы могли бы использовать что-то вроде:

somelist = [a for a in b if not a.criteria in otherlist] 

Если вы хотите оставить петлю в начале Python вы можете использовать break, так же, как в Java.

>>> for x in xrange(1,6): 
...  print x 
...  if x == 2: 
...   break 
... 
1 
2 

Если вы хотите, чтобы начать следующую итерацию цикла рано использовать continue, опять же, как вы бы в Java.

>>> for x in xrange(1,6): 
...  if x == 2: 
...   continue 
...  print x 
... 
1 
3 
4 
5 

Here's the documentation for break and continue. Это также охватывает else положения для петель, которые не работают, когда вы break.

4

continue и break работают точно так же, как и на других языках программирования, за исключением того, что вы не можете указать break на метку (как, например, на Java). Это означает, что вы можете только разорвать один цикл за один раз.