65.2k views
5 votes
. Write a recursive definition "make-flat", a function that returns all the elements of an arbitrarily nested list in a single-level list. (MAKE-FLAT ’((A B (Q)) C (D ((E (F)) G) H))) should return (A B Q C D E F G H).

User Kherel
by
5.3k points

1 Answer

4 votes

Answer:

def FLATTEN(l):

if len(l)==0:

return []

if isinstance(l[0], list):

return FLATTEN(l[0])+FLATTEN(l[1:])

else:

return [l[0]]+FLATTEN(l[1:])

l=[['A','B',['R']],'A','C',['A','D',[['A',['B']],'R'],'A']]

print "NESTED LIST: ",l

print "FLATTENED LIST: ",FLATTEN(l)

User Stefan Szasz
by
5.8k points