[Numpy-discussion] number ranges (was Re: Matlab page on scipy wiki)

Tim Hochberg tim.hochberg at cox.net
Mon Feb 13 19:20:02 CST 2006


Bill Baxter wrote:

> On 2/11/06, *Gary Ruben* <gruben at bigpond.net.au 
> <mailto:gruben at bigpond.net.au>> wrote:
>
>     Sasha wrote:
>     > On 2/10/06, Gary Ruben <gruben at bigpond.net.au
>     <mailto:gruben at bigpond.net.au>> wrote:
>     >> ...  I must say that Travis's
>     >> example numpy.r_[1,0,1:5,0,1] highlights my pet hate with
>     python - that
>     >> the upper limit on an integer range is non-inclusive.
>     >
>     > In this case you must hate that an integer range starts at 0 (I
>     don't
>     > think you would want len(range(10)) to be 11).
>
>
> First, I think the range() function in python is ugly to begin with.  
> Why can't python just support range notation directly like 'for a in 
> 0:10'.  Or with 0..10 or 0...10 syntax.  That seems to make a lot more 
> sense to me than having to call a named function.   Anyway, that's a 
> python pet peeve, and python's probably not going to change something 
> so fundamental...
>
> Second, sometimes zero-based, non-inclusive ranges are handy, and 
> sometimes one-based inclusive ranges are handy.  For array indexing, I 
> personally like zero based.  But sometimes I just want a list of N 
> numbers like a human would write it, from 1 to N, and in those cases 
> it seems really odd for N+1 to show up.
>
> This is a place where numpy could do something.  I think it would be 
> nice if numpy had something like an 'irange' (inclusive range) 
> function to complement the 'arange' function.  They would act pretty 
> much the same, except irange(5) would return [1,2,3,4,5], and 
> irange(1,5) would return [1,2,3,4,5].
>
> Anyway, I think I'm going to put a little irange function in my setup. 


FWIW, I'd recomend a different name. irange sounds like it belongs in 
the itertools module with ifilter, islice, izip, etc. Perhaps, rangei 
would work, although admittedly it's harder to see. Maybe crange for 
closed range (versus half-open range)? I dunno, but irange seems like 
it's gonna confuse someone, if not you, then other people who end up 
looking at your code.

-tim





More information about the Numpy-discussion mailing list