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
Freigeben: 2024-12-30 01:53:09
Original
1013 Leute haben es durchsucht

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

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

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

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

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!

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