Efficient implementation of deeply nested lists
Peter Otten
__peter__ at web.de
Thu Jan 19 08:52:38 EST 2006
Kay Schluehr wrote:
> I want to manipulate a deeply nested list in a generic way at a
> determined place. Given a sequence of constant objects a1, a2, ..., aN
> and a variable x. Now construct a list from them recursively:
>
> L = [a1, [a2, [....[aN, [x]]...]]
>
> The value of x is the only one to be changed. With each value of x a
> new instance of L is needed so that we actually have a function:
>
> L = lambda x: [a1, [a2, [....[aN, [x]]...]]
>
> I'm seeking for an efficient implementation that does not recompute the
> whole list each time. Any ideas?
I'd say you are nesting the wrong way.
>>> items = make_list(range(10))
>>> def make_list(items):
... return reduce(lambda *args: args, items)
...
>>> def update_value(items, value):
... return items[0], value
...
>>> items = make_list(range(10))
>>> items
(((((((((0, 1), 2), 3), 4), 5), 6), 7), 8), 9)
>>> update_value(items, 42)
(((((((((0, 1), 2), 3), 4), 5), 6), 7), 8), 42)
Obviously I must be missing something. What?
Peter
More information about the Python-list
mailing list