Spłaszcz nieregularną listę list

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

Tak, wiem, że ten temat był już omawiany (tutaj, tutaj, tutaj, tutaj), ale o ile wiem, wszystkie rozwiązania, z wyjątkiem jednego, zawodzą na liście takiej jak ta:

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

Gdzie jest pożądane wyjście

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

A może nawet lepiej, iterator. Jedyne rozwiązanie, które widziałem, które działa w przypadku dowolnego zagnieżdżania, znajduje się w tym pytaniu:

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

Czy to najlepszy model? Czy coś przeoczyłem? Jakieś problemy?