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

Wie kann ich eine flache Liste in Python effizient reduzieren?

DDD
DDDOriginal
2024-12-30 01:53:09997Durchsuche

How Can I Efficiently Flatten a Shallow List in Python?

Eine flache Liste in Python reduzieren

In Python kann die Reduzierung einer flachen Liste iterierbarer Elemente eine häufige Aufgabe sein, um eine verschachtelte Struktur in eine einstufige Liste umzuwandeln. Es gibt mehrere Ansätze, um dies zu erreichen, mit unterschiedlichem Leistungsniveau und Code-Lesbarkeit.

Ein erster Versuch könnte ein verschachteltes Listenverständnis beinhalten, wie zum Beispiel dieses:

[image for image in menuitem for menuitem in list_of_menuitems]

Dies wird jedoch der Fall sein Es tritt ein NameError auf, da „menuitem“ nicht im Rahmen des äußeren Verständnisses definiert ist.

Eine andere Möglichkeit besteht darin, die Reduzierung zu verwenden Funktion:

reduce(list.__add__, map(lambda x: list(x), list_of_menuitems))

Während diese Methode die Liste flacht, kann ihre Lesbarkeit durch die Konvertierung von QuerySet-Objekten in Listen mithilfe der list(x)-Aufrufe beeinträchtigt werden.

Eine effiziente und elegante Lösung wird vom itertools-Modul angeboten, insbesondere itertools.chain. Es ermöglicht die Iteration über eine abgeflachte Version der Datenstruktur, ohne eine neue Liste zu erstellen:

from itertools import chain
list(chain(*list_of_menuitems))

Dieser Ansatz vermeidet das Kopieren von Elementen in neue Listen und reduziert so den Overhead. Eine etwas explizitere Version, die die Verwendung des Entpackungsoperators * vermeidet, ist:

chain = itertools.chain.from_iterable([[1, 2], [3], [5, 89], [], [6]])
print(list(chain))  # [1, 2, 3, 5, 89, 6]

Diese Techniken können hilfreich sein, um flache Listen zu reduzieren und gleichzeitig Leistung und Lesbarkeit in Einklang zu bringen.

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