Een onregelmatige lijst met lijsten afvlakken

| | | | | | | | | | | |

Ja, ik weet dat dit onderwerp al eerder is behandeld (hier, hier, hier, hier), maar voor zover ik weet, mislukken alle oplossingen, behalve één, op een lijst als deze:

L = [[[1, 2] , 3], [4, 5]], 6] 

Waar de gewenste uitvoer is

[1, 2, 3, 4, 5, 6] 

Of misschien nog beter, een iterator. De enige oplossing die ik zag die werkt voor een willekeurige nesting is gevonden in deze vraag:

def flatten(x): result = [] for el in x: if hasattr(el, "__iter__") en niet isinstance(el, basestring): result.extend(flatten(el)) else: result.append(el) return result flatten(L) 

Is dit het beste model? Heb ik iets over het hoofd gezien? Zijn er problemen?