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
DDDOriginal
2024-12-28 16:04:11386Durchsuche

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

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!

Stellungnahme:
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