__setitem__ puzzle
Bjorn Pettersen
BPettersen at NAREX.com
Mon Apr 21 11:59:18 EDT 2003
> From: Anton Vredegoor [mailto:anton at vredegoor.doge.nl]
>
> I have subclassed the builtin list type to accept tuples for indexing.
> I am just experimenting with the code to see what I can do with it, so
> asking for what the code will be used for in order to provide a better
> way to do it will be answered with 'ni' :-)
>
> There's a problem with __setitem__ however. What's the proper way to
> write this class?
>
> Anton
>
> class tlist(list):
>
> def __getitem__(self,x):
> y = self[:]
> for z in x:
> y = y[z]
> return y
>
> def __setitem__(self,x,val):
> y = self[:]
root = y # save 1st level mutable items
> for z in x[:-1]:
> y = y[z]
> y[x[-1]] = val
self[:] = root # update 1st level mutable items
[...]
> L[(1,1,0)] = 0
Is equivalent to L[1,1,1], and you can also do fun things like L[1:2,
4:9]. Advice: special case one tuples (L[n]).
-- bjorn
More information about the Python-list
mailing list