Addressing the last element of a list
Giovanni Bajo
noway at sorry.com
Tue Nov 8 06:04:30 EST 2005
pinkfloydhomer at gmail.com wrote:
> I just want an alias.
What you want is impossible. But there are many workarounds.
> I just want to be able to make a reference to any old thing in Python.
> A list, an integer variable, a function etc. so that I, in complicated
> cases, can make a shorthand. If "myRef" could somehow "point at"
> something long an complicated like a[42]["pos"][-4], that might be
> useful.
One simple workaround:
def createAlias(L, idx1, idx2, idx3):
def setval(n):
L[idx1][idx2][idx3] = n
return setval
k = createAlias(a, 42, "pos", -4)
[...]
n = computeValue(...)
k(n) # store it!
You will also find out that your case is actually very unlikely in
well-designed code. You don't usually work with stuff with three level of
nesting like a[][][], since it gets totally confusing and unmaintanable. You
will end up always with objects with better semantic, and methods to modify
them. So in the end you will always have a reference to the moral equivalent of
a[42]["pos"], and that would be a well defined object with a method setThis()
which will modify the moral equivalent of [-4].
--
Giovanni Bajo
More information about the Python-list
mailing list