Flache Listen mit Iterables in Python reduzieren
In Python kann die Reduzierung einer flachen Liste, bei der jedes Element selbst ein Iterable ist, eine Herausforderung darstellen . In diesem Artikel werden mehrere Möglichkeiten untersucht, solche Listen effektiv zu reduzieren und dabei Leistung und Codeklarheit zu priorisieren.
Ansätze:
Listenverständnis
Der Versuch, ein verschachteltes Listenverständnis zu verwenden, kann aufgrund von NameErrors auftreten undefinierte Variablen innerhalb der verschachtelten Schleife:
[image for image in menuitem for menuitem in list_of_menuitems]
Reduzieren mit der Lambda-Funktion:
Die Verwendung von Reduzieren mit einer Lambda-Funktion bietet eine einfache Lösung:
reduce(list.__add__, map(lambda x: list(x), list_of_menuitems))
Allerdings kann die Lesbarkeit dieses Ansatzes durch die Verwendung von beeinträchtigt werden list(x).
Itertools.chain()
Itertools.chain() bietet eine effiziente und elegante Methode zum Reduzieren flacher Listen. Es verkettet Iterables nahtlos zu einem einzigen Iterable:
from itertools import chain list(chain(*list_of_menuitems))
Dieser Ansatz vermeidet redundante Kopien und bietet eine vergleichbare Leistung zur Reduzierung.
Itertools.chain.from_iterable ()
Für eine bessere Klarheit sollten Sie die Verwendung in Betracht ziehen itertools.chain.from_iterable():
chain = itertools.chain.from_iterable([[1,2],[3],[5,89],[],[6]]) print(list(chain))
Dies drückt die Reduzierung explizit ohne den Einsatz von Operatormagie aus.
Schlussfolgerung:
Itertools.chain() und seine Variationen bieten effektive und lesbare Methoden zum Reduzieren flacher Listen, Priorisieren der Leistung und Klarheit des Codes. Berücksichtigen Sie bei der Auswahl eines Ansatzes den spezifischen Anwendungsfall und die Lesbarkeitspräferenzen.
Das obige ist der detaillierte Inhalt vonWie kann ich flache Listen in Python effizient reduzieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!