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

Colin J. Williams cjw at sympatico.ca
Mon Feb 13 20:09:05 CST 2006

```Tim Hochberg wrote:

> 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