Extended slicing and Ellipsis - where are they used?

James Stroud jstroud at mbi.ucla.edu
Fri Sep 14 02:50:06 CEST 2007


Rodney Maxwell wrote:
> The following are apparently legal Python syntactically:
>    L[1:3, 8:10]
>    L[1, ..., 5:-2]
> 
> But they don't seem to work on lists:
>>>> l = [0,1,2,3]
>>>> l[0:2,3]
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> TypeError: list indices must be integers
>>>> l[...]
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> TypeError: list indices must be integers
> 
> So where is this extended slicing used?

AFAICT this syntax is not used in the standard library. However, the 
mega-beauty of it is that you can make use of it in your own classes:

py> class Bob(list):
...   def __getitem__(self, i):
...     try:
...       return [list.__getitem__(self, j) for j in i]
...     except TypeError:
...       return list.__getitem__(self, i)
...
py> b = Bob(xrange(15, 30))
py> b[3, 5, 7, 13]
[18, 20, 22, 28]

James



More information about the Python-list mailing list