Negative array indicies and slice()

Mark Lawrence breamoreboy at yahoo.co.uk
Mon Oct 29 06:10:45 EDT 2012


On 29/10/2012 02:31, Andrew Robinson wrote:
> Ok, hopefully this is better.  I love my own e-mail editor...
>
> I can see that the slice() function can pass in arbitrary arguments.
> I'm not sure for lists, which is what the range is applied to, why an
> argument like "a" would be part of a slice.
> I *really* don't see what the advantage of a slice class is over a mere
> list in the order of start, stop, step eg: [ 1,4,9 ]
>
> In a dictionary, where "a" could be a key -- I wasn't aware that there
> was a defined order that the idea of slice could apply to.
>
> When I look at the documentation,
> http://www.python.org/doc//current/c-api/slice
>
> The only thing that slice has which is special, is that the the length
> of the sequence can be given -- and the start and stop index are either
> trimmed or an error (exception???) is thrown.
>
> Where is the information on the more general case of slice()? :-\
>
> I am thinking, can one use the 'super' type of access, to override --
> within the list object itself -- the __getitem__ method, and after
> pre-processing -- call the shadowed method with the modified
> parameters?  That would allow me to use the normal a[-4:6] notation,
> without having to write a wrapper class that must be explicitly called.
>
> I'm thinking something like,
>
> PyListObject.__getitem__= lambda self, slice: ....
>
> --Andrew.
>

I suggest that you go back and read the tutorial about slicing.  I say 
this because we've started with negative array indicies and slice() (but 
Python arrays haven't been mentioned :), then moved onto (x)range and 
now lists, dictionaries and the C API for slices.

An alternative is to tell us precisely what you're trying to achieve. 
The odds are that there's a simple answer waiting in the wings for a 
simple question.

-- 
Cheers.

Mark Lawrence.




More information about the Python-list mailing list