Heim >Backend-Entwicklung >Python-Tutorial >Wie kann man unregelmäßig verschachtelte Listen in Python effizient reduzieren?
So reduzieren Sie eine unregelmäßig verschachtelte Liste von Listen
Obwohl es Diskussionen über die Reduzierung von Listenstrukturen gibt, bleiben die Lösungen bei solchen Listen tendenziell unzureichend tief verschachtelt. Ein effektiver Ansatz wird unten vorgestellt:
Rekursiver Funktionsansatz
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
Diese Funktion prüft, ob jedes Element iterierbar ist (außer Strings) und reduziert es rekursiv, wenn dies zutrifft . An das Ergebnis werden nicht iterierbare Elemente angehängt.
Generatorfunktionsansatz
Eine Verbesserung der Lesbarkeit und Leistung des Abflachungsprozesses ist mithilfe von Generatorfunktionen möglich:
Python 2 (mit Iterable ABC):
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 (mit Tupel für str und Bytes):
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
Diese Generatorfunktion gibt die abgeflachten Elemente träge zurück und optimiert so die Speichernutzung . Es kann je nach Bedarf wiederholt oder in eine Liste konvertiert werden.
Das obige ist der detaillierte Inhalt vonWie kann man unregelmäßig verschachtelte Listen in Python effizient reduzieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!