Heim >Backend-Entwicklung >Python-Tutorial >Wie können wir beliebig verschachtelte Listen in Python effizient reduzieren?
Beliebig verschachtelte Listenreduzierung
Verschachtelte Listen mit unterschiedlicher Tiefe stellen eine Herausforderung dar, sie auf eine einzige Dimension zu reduzieren. Während es zahlreiche Lösungen zum Reduzieren flacher Listen gibt, haben viele Probleme mit unregelmäßig verschachtelten Listen, wie zum Beispiel [[[1, 2, 3], [4, 5]], 6].
The Recursive Ansatz
Ein Ansatz, wie in der Frage erwähnt, beinhaltet Rekursion:
def flatten(x): result = [] for el in x: if hasattr(el, "__iter__") and not isinstance(el, basestring): result.extend(flatten(el)) else: result.append(el) return result
Dieser Algorithmus iteriert durch die Liste, reduziert alle verschachtelten Listen rekursiv und hängt nicht iterierbare Elemente an das Ergebnis an.
Generatorfunktionen für verbesserte Lesbarkeit und Leistung
Generatorfunktionen bieten eine Alternative Ansatz, der sowohl die Lesbarkeit als auch die Effizienz unserer Abflachung verbessern kann Prozess.
Python 2
from collections import Iterable def flatten(xs): for x in xs: if isinstance(x, Iterable) and not isinstance(x, basestring): for item in flatten(x): yield item else: yield x
Python 3
from collections.abc import Iterable def flatten(xs): for x in xs: if isinstance(x, Iterable) and not isinstance(x, (str, bytes)): yield from flatten(x) else: yield x
In Python 3 die Ausbeute des Operators Gibt Elemente von verschachtelten Generatoren bequem nacheinander zurück, während wir in Python 2 explizit durch iterieren Untergeneratoren.
Das obige ist der detaillierte Inhalt vonWie können wir beliebig verschachtelte Listen in Python effizient reduzieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!