Een lijst $$l$$ is opgebouwd uit strings, getallen en lijsten. Elk van die lijsten bevat
opnieuw strings, getallen of lijsten. Deze laatste lijsten bevatten opnieuw strings, getallen
of lijsten van ... . Een voorbeeld van een derglijke lijst $$l$$ is
['a', 'b', 1, ['a', 'b'], ['c', [2, 'b', ['e']], 'c']]
.
Het gaat dus om geneste lijsten, waarbij het niveau van nesting op voorhand niet vastligt.
Schrijf een functie vlak()
met als enig argument een dergelijke lijst $$l$$.
Het resultaat is een nieuwe lijst, die geen nesting bevat, maar die alle strings van $$l$$ bevat
in de volgorde waarin ze ook in $$l$$ voorkomen. De vlakke versie van
l = ['a', 'b', 1, ['a', 'b'], ['c', [2, 'b', ['e']], 'c']]
is dus
['a', 'b', 1, 'a', 'b', 'c', 2, 'b', 'e', 'c']
.
LET OP: Je code mag geen lusconstructies bevatten (geen for
- of
while
-lussen en ook geen comprehensions, en moet recursief geschreven worden
(en moet dus zeker een zinvolle recursieve oproep bevatten).
vlak(['a', 'b', 1, ['a', 'b'], ['c', [2, 'b', ['e']], 'c']]) #['a', 'b', 1, 'a', 'b', 'c', 2, 'b', 'e', 'c']