range or xrange disallowed for big numbers

Alex Martelli aleax at aleax.it
Sat Oct 5 06:23:05 EDT 2002


Chad Netzer wrote:

> 
> Is there a reason (technical or philosophical) to disallow:
> 
>     range( 10000000000L, 10000000000L + 1L )
> 
> or
> 
>     xrange( 10000000000L )
> 
> etc...?

Slowing down common cases of range and xrange (by keeping PyObject's
or Python longs rather than C-level long's) is an unpleasant prospect,
although the generality of looping easily over whatever range one
may want can sometimes be useful.  Maybe rather than fixing either
type a new, perhaps Python-coded built-in generator could be added:

def genrange(start, stop=None, step=1):
    if step == 0:
        raise ValueError, "step can't be 0"
    if stop is None:
        start, stop = 0, start
    if step > 0:
        while start < stop:
            yield start
            start += step
    else:
        while start > stop:
            yield start
            start += step


Alex




More information about the Python-list mailing list