Skipping Parts of a For Loop

Alex Martelli aleax at aleax.it
Sat Sep 14 15:51:46 EDT 2002


Thomas Guettler wrote:

> Hi!
> 
> Is there a way to skip some parts in a for loop?
> 
> 
> for i in range(3):
> print "i before", i
> i=2
> print "i after", i
> 
> #Results in:
> 
> i before 0
> i after 2
> i before 1
> i after 2
> i before 2
> i after 2
> 
> Is there a way to skip some parts?
> 
> "continue" skipps one element. But how can
> I skip several?

In Python 2.2, a for loop like:
    for x in something:
        "any statements here"
is equivalent to:
    _aux = iter.something()
    while True:
        try: x = _aux.next()
        except StopIteration: break
        "any statements here"

You can take advantage of this as long as you
bind the iterator to a name, exploiting also the fact
that iter(iter(x)) is iter(x) [i.e., iter is idempotent
on iterators]:

aux = iter(range(3))
for i in aux:
  print "i before", i
  for i in range(i,3): aux.next()
  print "i after", i

Each calls to the next method of the iterator object
"skips" a whole coming leg of the for loop.


Alex




More information about the Python-list mailing list