Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich eine verschachtelte Liste in Python effizient reduzieren?

Wie kann ich eine verschachtelte Liste in Python effizient reduzieren?

Susan Sarandon
Susan SarandonOriginal
2024-12-31 03:09:10439Durchsuche

How Can I Efficiently Flatten a Nested List in Python?

Eine Liste von Listen reduzieren

Problemstellung:

Sie erhalten eine verschachtelte Liste und müssen diese reduzieren eine einzelne Liste. Sie haben beispielsweise eine Liste mit Listen wie:

[[1, 2, 3],
[4, 5, 6],
[7],
[8, 9]]

Das Ziel besteht darin, diese Struktur in eine einzige Liste zu reduzieren:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Lösung:

Um eine Liste von Listen zu reduzieren, können Sie ein verschachteltes Listenverständnis verwenden. Diese Technik beinhaltet das Durchlaufen jeder inneren Liste (dargestellt durch xs im Code) und das Anhängen jedes einzelnen Elements (dargestellt durch x) an eine abgeflachte Liste (mit dem Namen flat_list):

flat_list = [
    x
    for xs in xss
    for x in xs
]

Dies entspricht dem Folgenden explizite Iteration mit verschachtelten Schleifen:

flat_list = []

for xs in xss:
    for x in xs:
        flat_list.append(x)

Alternativ können Sie eine Funktion erstellen, um diese Reduzierung durchzuführen Operation:

def flatten(xss):
    return [x for xs in xss for x in xs]

Mit dieser Funktion können Sie die Eingabeliste wie folgt reduzieren:

flat_list = flatten([[1, 2, 3],
                   [4, 5, 6],
                   [7],
                   [8, 9]])

Dieser Ansatz ist hocheffizient und weist eine deutlich bessere Leistung als andere Methoden wie Using oder Reduce auf . Die Listenverständnistechnik stellt sicher, dass jedes Element nur einmal in die vereinfachte Liste kopiert wird.

Das obige ist der detaillierte Inhalt vonWie kann ich eine verschachtelte Liste 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