Sì, so che questo argomento è già stato trattato (qui, qui, qui, qui), ma per quanto ne so, tutte le soluzioni, tranne una, falliscono in un elenco come questo:
L = [[[1, 2 , 3], [4, 5]], 6]
Dove si trova l'output desiderato
[1, 2, 3, 4, 5, 6]
O forse ancora meglio, un iteratore. L'unica soluzione che ho visto che funziona per un annidamento arbitrario si trova in questa domanda:
def flatten(x): result = [] for el in x: if hasattr(el, "__iter__") e non isinstance(el, basestring): result.extend(flatten(el)) else: result.append(el) return risultato flatten(L)
È il modello migliore? Ho trascurato qualcosa? Qualche problema?