replace deepest level of nested list
Roberto Bonvallet
Roberto.Bonvallet at cern.ch
Mon Sep 4 10:54:27 EDT 2006
David Isaac wrote:
> I have a list of lists, N+1 deep.
> Like this (for N=2):
> [[['r00','g00','b00'],['r01','g01','b01']],[['r10','g10','b10'],['r11','g11'
> ,'b11']]]
>
> I want to efficiently produce the same structure
> except that the utlimate lists are replaced by a chosen (by index) item.
> E.g.,
> [['r00','r01'],['r10','r11']]
>
> N is not known ahead of time.
First thing I came up with:
>>> l = [[['r00','g00','b00'],['r01','g01','b01']],[['r10','g10','b10'],['r11','g11','b11']]]
>>> def get_deepest(l, n):
... if isinstance(l[0], list):
... return [get_deepest(s, n) for s in l]
... else:
... return l[n]
...
>>> get_deepest(l, 0)
[['r00', 'r01'], ['r10', 'r11']]
>>> get_deepest(l, 1)
[['g00', 'g01'], ['g10', 'g11']]
>>>
n is the chosen index.
HTH.
--
Roberto Bonvallet
More information about the Python-list
mailing list