[Python-Dev] PEP 322: Reverse Iteration

Guido van Rossum guido at python.org
Tue Nov 4 10:53:08 EST 2003


> And what about irange with an optional reverse= argument?  I did have
> (and write about on c.l.py) a case where I currently code:
> 
>     if godown:
>         iseq = xrange(len(sq)-1, start-1, -1)
>     else:
>         iseq = xrange(start, len(sq), 1)
>     for index in iseq:
>         ...
> 
> and would be just delighted to be able to code, instead,
> 
>     for index in irange(start, len(sq), reverse=godown):
>         ...
> 
> Even when the need to reverse can more easily be hardwired in
> the source (a more common case), would
> 
>     for index in irange(start, stop, reverse=True):
> 
> be really so much worse than
> 
>     for index in revrange(start, stop):
> 
> ...?

Darn.  At your recommendation I tried reading my inbox in reverse
today (how appropriate... :-) and I missed this use case when I said
I'd rather have two functions.  Oh well.

I do think that the savings in typing from having a reverse= keyword
for that one use case are easily outnumbered by the extra typing for
the much more common use case that has reverse=True.

But really, I could live with either one, so Raymond can decide based
upon the evidence, and as I said, either way having this in itertools
is an argument against making reversed() a builtin.

--Guido van Rossum (home page: http://www.python.org/~guido/)



More information about the Python-Dev mailing list