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?