Fredrik Lundh wrote:
> Colin J. Williams wrote:
> 
>> One of the little irritants of Python is that the range syntax is rather 
>> long-winded:
>> [Dbg]>>> range(3, 20, 6)
>> [3, 9, 15]
>> [Dbg]>>>
>> It would be nice if one could have something like 3:20:6.
> 
> if you find yourself using range a lot, maybe you should check if you 
> couldn't use custom iterators more often.
> 
> or use the R helper:
> 
>  >>> R[3:20:6]
> [3, 9, 15]
>  >>> R[:20]
> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>  >>> R[0:20:2]
> [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>  >>> R[1:20:2]
> [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
> 
> where R is defined as:
> 
>  >>> class R:
> ...     def __getitem__(self, slice):
> ...             return range(*slice.indices(slice.stop))
> ...
>  >>> R = R()
> 
> </F>
> 
Thanks, this appears to be a bit neater than the numpy version.  On the 
other hand, the numpy version provides a wider functionality.

R[start, stop, increment] is certainly a little simpler than 
range(start, stop, increment).  However, could we not achieve that with:
 >>> R= range
 >>> R(2, 20, 3)
[2, 5, 8, 11, 14, 17]
 >>>

Your point about iterators is well taken, but it seems that the range is 
used sufficiently frequently that some syntactic form would be helpful.

Colin W.

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to