Aplatir une liste irrégulière de listes

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

Oui, je sais que ce sujet a déjà été traité (ici, ici, ici, ici), mais pour autant que je sache, toutes les solutions, sauf une, échouent sur une liste comme celle-ci :

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

Où se trouve la sortie souhaitée

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

Ou peut-être mieux encore, un itérateur. La seule solution que j'ai vue qui fonctionne pour une imbrication arbitraire se trouve dans cette question :

def flatten(x) : résultat = [] for el in x : if hasattr(el, "__iter__") and not isinstance(el, basestring) : result.extend(flatten(el)) else : result.append(el) return result flatten(L) 

Est-ce le meilleur modèle ? Ai-je oublié quelque chose ? Des problèmes ?