Heim > Backend-Entwicklung > Python-Tutorial > Wie können wir beliebig verschachtelte Listen in Python effizient reduzieren?

Wie können wir beliebig verschachtelte Listen in Python effizient reduzieren?

DDD
Freigeben: 2024-12-28 16:04:11
Original
426 Leute haben es durchsucht

How Can We Efficiently Flatten Arbitrarily Nested Lists in Python?

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage