Eine Liste von Listen reduzieren
Sie haben eine Liste von Listen und möchten diese in eine einzige, flache Liste umwandeln. Zum Beispiel könnten Sie Folgendes haben:
[ [1, 2, 3], [4, 5, 6], [7], [8, 9] ]
Und zielen darauf ab, Folgendes zu erhalten:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Lösung
Ein verschachteltes Listenverständnis bietet eine elegante Lösung Lösung zum Reduzieren einer Liste von Listen:
flat_list = [x for xs in xss for x in xs]
Dieser Code iteriert über jede Unterliste in xss und seine Elemente, wobei die Ergebnisse in flat_list akkumuliert werden.
Alternativ können Sie mithilfe eines Listenverständnisses mit einem Join reduzieren oder die Funktion sum() verwenden:
flat_list = [j for i in xss for j in i] flat_list = sum(xss, []) # or sum(xss)
Leistung Vergleich
Obwohl diese Methoden gleichwertige Ergebnisse liefern, variiert ihre Leistung. Benchmarks zeigen, dass das Verständnis verschachtelter Listen deutlich schneller ist als die anderen Ansätze, insbesondere bei großen Eingabelisten.
Diese überlegene Leistung ergibt sich aus der Tatsache, dass das Listenverständnis einmal eine einzelne Liste generiert und jedes Element nur einmal kopiert. Im Gegensatz dazu erstellt die Join-basierte Methode zahlreiche Zwischenlisten, während der sum()-Ansatz eine komplexere Operation beinhaltet.
Rekursiver Ansatz
Wenn Ihre Liste Listen enthält Hat eine beliebige Verschachtelungstiefe, benötigen Sie möglicherweise einen rekursiven Ansatz für eine vollständige Reduzierung. Betrachten Sie die folgende Funktion:
def flatten_completely(xss): return [x for elem in xss for x in flatten_completely(elem) if not isinstance(x, list)] if isinstance(xss, list) else [xss]
Das obige ist der detaillierte Inhalt vonWie kann ich eine Liste von Listen in Python effizient reduzieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!