Achatar uma lista irregular de listas

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

Sim, sei que este assunto já foi abordado anteriormente (aqui, aqui, aqui, aqui), mas até onde eu sei, todas as soluções, exceto uma, falham em uma lista como esta:

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

Onde a saída desejada é

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

Ou talvez ainda melhor, um iterador. A única solução que vi que funciona para um aninhamento arbitrário é encontrada nesta pergunta:

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

Este é o melhor modelo? Eu esqueci alguma coisa? Algum problema?