PEP 276 Simple Iterator for ints (fwd)

David Eppstein eppstein at ics.uci.edu
Wed Nov 28 20:44:05 CET 2001


In article <3C048CCC.6A8C3743 at engcorp.com>,
 Peter Hansen <peter at engcorp.com> wrote:

> I agree that sounds like a worthy goal.  I disagree that your
> suggestion is any more likely to be understood by anyone,
> other than perhaps a mathematician.  As a very experienced
> programmer, I found it quite obscure and am unsure I 
> would have figured it out were it not for the context of
> recent threads on the subject.
> 
> Maybe we should look back to BASIC (for i = 1 to 5: next) 
> or one of the suggestions for something which looks more 
> explicitly like a list of items (for i in [0..5]) or 
> (for i in [0, 1, .. 5] ).  Especially this latter would
> definitely be understandable to anyone, IMHO.

After more thought, I am coming to like Ewing's suggestion of
    for 0 <= i < 5:
much better than the earlier-discussed
    for i in [0, 1, .. 4]:

The latter notation now seems unnecessarily redundant.  Think of it by 
analogy -- which of the following would you most likely use,
    if 0 <= i < 5:
or
    if i in [0, 1, .. 4]:
or
    if i in range(5):
or even (with Perl-like conciseness)
    if i in 5:
?

Another advantage of Ewing's suggestion is that it cleanly avoids the whole 
closed versus half-open debate.

The biggest disadvantage of Ewing's suggestion is the lack of a stepsize 
(other than -1 which is easily handled by reversing the inequalities).  But 
I think +1 and -1 are by far the most common steps, and anything else can 
be handled by multiplying the index within the loop, or by using range().
-- 
David Eppstein       UC Irvine Dept. of Information & Computer Science
eppstein at ics.uci.edu http://www.ics.uci.edu/~eppstein/



More information about the Python-list mailing list