As long as the recursion limit of your installation is not reached, you can flatten nested lists by using this function:
def flatten(o): if isinstance(o, list): nonlist = [x for x in o if not isinstance(x, list)] listelems = [x for x in o if isinstance(x, list)] listelems = [flatten(x) for x in listelems] listelems = sum(listelems, []) return nonlist+listelems else: return [o]
You consider this to be too legible and like the syntax of C or lisp better? Python is willing to help you.
def flatten2(o): return [x for x in o if not isinstance(x, list)]+sum([flatten2(x) for x in o if isinstance(x, list)], []) if isinstance(o, list) else [o]
You don’t like naming your functions? Now here is an example of coding done the wrong way
(lambda a:lambda v:a(a,v))(lambda s,o: [x for x in o if not isinstance(x, list)]+sum([s(s, x) for x in o if isinstance(x, list)], []) if isinstance(o, list) else [o])([[1, 2], [3, 4], [5, 6]])
(There is a hint for those who are actually trying to read this.)