logo

Liste in Python reduzieren

Eine Einleitung

A Aufführen gilt als eine der flexibelsten Datenstrukturen in der Programmiersprache Python. Andererseits ist eine zweidimensionale Liste oder 2D-Liste, die allgemein als Liste von Listen bezeichnet wird, ein Objekt einer Liste, bei der jedes Element selbst eine Liste ist. Zum Beispiel: [[19, 18, 17], [16, 15, 14], [13, 12, 11]].

Beim Reduzieren einer Listenliste handelt es sich um einen Vorgang, bei dem eine zweidimensionale Liste in eine eindimensionale Liste umgewandelt wird, indem die Verschachtelung aller in der Listenliste enthaltenen Listenelemente aufgehoben wird, d. h. [[9, 8, 7], [6 , 5, 4], [3, 2, 1]] bis [9, 8, 7, 6, 5, 4, 3, 2, 1].

Wir können den Abflachungsprozess mithilfe der Verschachtelung durchführen für Schleifen, Rekursion, Listenverständnis, Kernfunktionen oder das Importieren der Bibliotheken oder Pakete in Python auf die Tiefe und Regelmäßigkeit der verschachtelten Listen.

In diesem Tutorial werden wir verschiedene Methoden erarbeiten, um die verschachtelten Listen mithilfe der Programmiersprache Python zu reduzieren. Aber bevor wir beginnen, wollen wir uns mit den Arten verschachtelter Listen vertraut machen.

Welche Arten von verschachtelten Listen gibt es?

Wie wir wissen, Python ist eine schwach typisierte Programmiersprache. Daher können wir auf zwei Arten von Listentypen stoßen. Diese Listen oder verschachtelten Listen lauten wie folgt:

  1. Regelmäßige Liste von Listen
  2. Unregelmäßige Liste von Listen

Regelmäßige Liste von Listen

Jedes Element in der regulären Listenliste wird als Unterliste bezeichnet, wodurch die Einheitlichkeit des Elementtyps gewährleistet wird. Zum Beispiel: [[9, 8, 7], [6, 5, 4], [3, 2, 1]] ist eine reguläre Liste von Listen wie [9, 8, 7], [6, 5, 4] , [3, 2, 1] ist vom Listentyp.

Unregelmäßige Liste von Listen

Python neue Zeile

Jedes Element in der unregelmäßigen Liste von Listen wird entweder als Unterliste oder als Nichtlistenelement bezeichnet (z. B. eine Zeichenfolge oder eine Ganzzahl). Es liegt also eine Unregelmäßigkeit hinsichtlich der Art des Elements vor. Zum Beispiel: [[9, 8, 7], [6, 5], 4, 3] ist eine unregelmäßige Liste von Listen, da [9, 8, 7] und [6, 5] zu den Listentypen gehören, während 4 und 3 sind vom Typ int.

Reduzieren der Liste von Listen mithilfe der verschachtelten for-Schleifen

Reduzieren der Liste von Listen mit verschachtelten Listen für Die Hilfe von Loops gilt als Brute-Force-Ansatz, um eine flache Liste zu erhalten. Wir können diese Methode durchführen, indem wir jedes Element aus der zweidimensionalen Liste auswählen und es in einer eindimensionalen Liste anordnen.

Betrachten wir das folgende Beispiel, das sowohl für reguläre als auch für unregelmäßige Listen von Listen funktioniert.

Beispiel:

 # defining the function def flattenlist(_2dlist): # defining an empty list flatlist = [] # Iterating through the outer list for item in _2dlist: if type(item) is list: # If the item is of the list type, iterating through the sub-list for element in item: flatlist.append(element) else: flatlist.append(item) return flatlist # defining the nested list nestedlist = [[10, 20, 30, 40], [50, 60, 70], [80, 90, 100]] print('Genuine List:', nestedlist) print('Converted Flat List:', flattenlist(nestedlist)) 

Ausgabe:

 Genuine List: [[10, 20, 30, 40], [50, 60, 70], [80, 90, 100]] Converted Flat List: [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] 

Erläuterung:

Im obigen Beispiel haben wir eine Funktion definiert als Flattenlist das nimmt einen Parameter als an _2dlist . Wir haben es dann genutzt für Schleife, um die Elemente der verschachtelten Liste zu iterieren und sie anzuhängen, um eine abgeflachte Liste zu generieren. Anschließend haben wir die verschachtelte Liste definiert und implementiert Flattenlist Funktion. Infolgedessen wurde die verschachtelte Liste erfolgreich in die abgeflachte Liste umgewandelt.

Reduzieren der verschachtelten Liste mithilfe eines Listenverständnisses

Das Reduzieren der Liste von Listen mit Hilfe eines Listenverständnisses wird als eleganter Ansatz angesehen, um eine flache Liste abhängig von einer zweidimensional vorhandenen Liste zu erhalten. Allerdings bietet dieser Ansatz eine weniger intuitive Lösung.

Betrachten wir das folgende Beispiel.

Beispiel:

 # defining the nested list nestedlist = [[10, 20, 30, 40], [50, 60, 70], [80, 90]] # list comprehension flatlist = [element for sub_list in nestedlist for element in sub_list] print('Genuine list:', nestedlist) print('Converted list:', flatlist) 

Ausgabe:

 Genuine list: [[10, 20, 30, 40], [50, 60, 70], [80, 90]] Converted list: [10, 20, 30, 40, 50, 60, 70, 80, 90] 

Erläuterung:

Im obigen Beispiel haben wir eine verschachtelte Liste und ein Listenverständnis definiert. Wir haben sie dann für die Benutzer ausgedruckt. Infolgedessen wurde die verschachtelte Liste erfolgreich in die abgeflachte Liste umgewandelt.

Reduzieren der Liste von Listen mithilfe der rekursiven Methode

Wir können auch die rekursive Methode verwenden, um die zweidimensionale Liste zu reduzieren. Betrachten wir das folgende Beispiel, in dem die rekursive Methode implementiert wird, um die Liste der Listen zu reduzieren. Diese Implementierung eignet sich sowohl für reguläre als auch für unregelmäßige Listen.

Beispiel:

 # defining a function def flattenlist(nestedlist): if len(nestedlist) == 0: return nestedlist if isinstance(nestedlist[0], list): return flattenlist(nestedlist[0]) + flattenlist(nestedlist[1:]) return nestedlist[:1] + flattenlist(nestedlist[1:]) print(flattenlist([[10, 20, 30, 40], [50, 60, 70], [80, 90], 100])) 

Ausgabe:

 [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] 

Erläuterung:

Im obigen Beispiel haben wir eine Funktion definiert und eine verwendet Wenn Stellungnahme Gibt an, ob die Länge der verschachtelten Liste gleich Null ist, und gibt dann die verschachtelte Liste zurück.

String-Format Java

Wenn das Datenelement auf dem nullten Index eine Instanz einer Liste ist, geht der Listenindex erneut in die Funktion ein und wird zum folgenden Index der Liste hinzugefügt und so weiter. Andernfalls gibt die Funktion die Elemente usw. zurück. Zuletzt haben wir die verschachtelte Liste definiert und die Funktion ausgeführt. Dadurch wurde die Liste der Listen rekursiv abgeflacht.

Nutzung von Python-Bibliotheken

Wir können auch einige der Python-Programmiersprachenbibliotheken verwenden, um die Liste der Listen zu reduzieren. Die Implementierung dieser Bibliotheken wird im Folgenden beschrieben:

Reduzieren der Liste von Listen mithilfe der Funktionstools und Operatorbibliotheken

Der Operator Die Bibliothek bietet die iconcat() Funktion zum Ausführen der grundlegenden Operation wie der Verkettung. Wir können diese Funktion kumulativ von links nach rechts auf die Datenelemente einer verschachtelten Liste anwenden, was zur Reduzierung der verschachtelten Liste auf eine abgeflachte Liste führt.

Betrachten wir das folgende Beispiel, um seine Implementierung zu verstehen.

Beispiel:

 # importing the required libraries import operator import functools regularlist = [] # Converting the list of lists into a flattened one. def convo(nestedlist): for element in nestedlist: if type(element) is list: regularlist.append(element) else: regularlist.append([element]) return regularlist twoDlist = [[10, 20, 30, 40], [50, 60, 70], [80, 90, 100], 110] regular2Dlist = convo(twoDlist) print('Given List:', twoDlist) print('Converted list:', functools.reduce(operator.iconcat, regular2Dlist, [])) 

Ausgabe:

watchcartoononline.io Alternativen
 Given List: [[10, 20, 30, 40], [50, 60, 70], [80, 90, 100], 110] Converted list: [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110] 

Erläuterung:

Im obigen Beispiel haben wir die importiert Funktools Bibliothek zusammen mit der Operator Bibliothek. Wir haben dann eine leere Liste als definiert reguläre Liste . Wir haben dann eine Funktion definiert als Convo um die Liste der Listen in eine abgeflachte Liste umzuwandeln. In dieser Funktion haben wir die verwendet für Schleife, in der die Elemente aus der verschachtelten Liste an die leere Liste angehängt werden, die wir zuvor definiert haben. Später haben wir die verschachtelte Liste definiert und führen die Funktion aus. Dadurch wird die Liste der Listen erfolgreich in eine vereinfachte Liste konvertiert.

Reduzieren der Liste von Listen mithilfe der itertools-Bibliothek

Der itertools Die Bibliothek bietet die Kette() Funktion, die es uns ermöglicht, eine verschachtelte Liste im Idealfall in eine einzelne abgeflachte Liste umzuwandeln. Diese Funktion behandelt aufeinanderfolgende Serien als einzelne Serien, indem sie sie über das als Parameter übergebene Iterable seriell iteriert.

Betrachten wir das folgende Beispiel:

Beispiel:

 # importing the itertools library import itertools # defining the nested list nestedlist = [[10, 20, 30, 40], [50, 60, 70], [80, 90, 100]] flattenlist = list(itertools.chain(*nestedlist)) print('The nested list:', nestedlist) print('The flattened list:', flattenlist 

Ausgabe:

 The nested list: [[10, 20, 30, 40], [50, 60, 70], [80, 90, 100]] The flattened list: [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] 

Erläuterung:

Im obigen Beispiel haben wir die importiert itertools Bibliothek und generierte eine verschachtelte Liste. Das haben wir dann genutzt Kette() Funktion zum Konvertieren der angegebenen verschachtelten Liste in die abgeflachte Liste. Endlich haben wir das Ergebnis an die Benutzer zurückgegeben. Dadurch wird die Liste der Listen erfolgreich reduziert.

Reduzieren der Liste von Listen mithilfe der NumPy-Bibliothek

Der NumPy Die Bibliothek bietet verschiedene alltägliche Operationen, einschließlich der spalten- oder zeilenweisen Verkettung zweidimensionaler regulärer Arrays. Wir werden das Attribut namens verwenden Wohnung um einen eindimensionalen Iterator über das Array zu bekommen, um das Ziel zu erobern. Betrachten wir das folgende Beispiel, um die Verwendung der Verkettungsfunktion und des flachen Attributs zu verstehen.

Beispiel:

 # importing the library import numpy # defining the nested list nestedlist = [[10, 20, 30, 40], [50, 60, 70], [80, 90]] # using the concatenate function along with the flat attribute flattenlist = list(numpy.concatenate(nestedlist).flat) print('The Nested list:', nestedlist) print('The Flattened list:', flattenlist) 

Ausgabe:

 The Nested list: [[10, 20, 30, 40], [50, 60, 70], [80, 90]] The Flattened list: [10, 20, 30, 40, 50, 60, 70, 80, 90] 

Erläuterung:

Im obigen Beispiel haben wir die importiert Numpy Bibliothek und definierte eine verschachtelte Liste. Das haben wir dann genutzt verketten Funktion der Numpy Bibliothek zusammen mit ihrer Wohnung Attribut, um die Elemente der verschachtelten Liste zu reduzieren und sie zu einer neuen reduzierten Liste zu verketten. Abschließend haben wir das Ergebnis für die Benutzer ausgedruckt. Somit wird die Liste der Listen erfolgreich reduziert.

Kernfunktionen nutzen

Wir können die Reduzierungsaufgabe auch durchführen, indem wir einige Kernfunktionen nutzen, die die Programmiersprache Python bereitstellt.

So konvertieren Sie einen String in einen Integer-Java

Reduzieren der Liste von Listen mithilfe der Summenfunktion

Als weitere Lösung des Problems können wir die Summierung über innere Listen in Betracht ziehen. Wir übergeben zwei Argumente an die Summe Funktion: Der erste Parameter ist wiederholbar , was eine verschachtelte Liste ist, und der zweite Parameter ist Start Dies ist eine leere Liste für den folgenden Fall, die als anfängliche flache Liste dient, zu der die Datenelemente der inneren Unterlisten hinzugefügt werden.

Wir können sagen, dass dieser Ansatz ziemlich praktisch ist, da wir nichts importieren müssen. Es ist jedoch langsamer als das itertools() Und Kette() Funktioniert, wenn in der verschachtelten Liste eine große Anzahl von Unterlisten vorhanden ist.

Betrachten wir das folgende Beispiel:

Beispiel:

 # defining a nested list nestedlist = [[10, 20, 30, 40], [50, 60, 70], [80, 90]] # using the sum function flattenlist = sum(nestedlist, []) print('The Nested list:', nestedlist) print('The Flattened list:', flattenlist) 

Ausgabe:

 The Nested list: [[10, 20, 30, 40], [50, 60, 70], [80, 90]] The Flattened list: [10, 20, 30, 40, 50, 60, 70, 80, 90] 

Erläuterung:

Im obigen Beispiel haben wir die verschachtelte Liste definiert. Das haben wir dann genutzt Summe() Funktion und reduzierte die verschachtelte Liste in eine eindimensionale Liste und druckte die resultierende Liste für die Benutzer aus. Als Ergebnis haben wir die Liste der Listen erfolgreich in eine flache Liste umgewandelt.

Reduzieren der Liste von Listen mit dem Schlüsselwort Lambda

Mit dem Schlüsselwort können wir eine anonyme Funktion definieren Lambda . Wir können die reguläre/unregelmäßige Liste als Parameter an diese anonyme Funktion übergeben. Die Auswertung des Ausdrucks erfolgt, um eine flache eindimensionale Liste zu erhalten.

Betrachten wir das folgende Beispiel:

Beispiel:

 # Defining the nested list nestedlist = [[10, 20, 30], [30, 50, 60], [40, 60, 70], 70] # Using lambda parameters: expression flattenlist = lambda nestedlist:[item for element in nestedlist for item in flattenlist(element)] if type(nestedlist) is list else [nestedlist] print('The Nested list:', nestedlist) print('The Flattened List:', flattenlist(nestedlist)) 

Ausgabe:

 The Nested list: [[10, 20, 30], [30, 50, 60], [40, 60, 70], 70] The Flattened List: [10, 20, 30, 30, 50, 60, 40, 60, 70, 70] 

Erläuterung:

Im obigen Beispiel haben wir eine verschachtelte Liste definiert. Das haben wir dann genutzt Lambda Schlüsselwort zusammen mit einem Argument, das einen Ausdruck für das Listenverständnis definiert. Wir haben sie dann für die Benutzer ausgedruckt. Als Ergebnis haben wir die zweidimensionale unregelmäßige Liste erfolgreich in die abgeflachte Liste umgewandelt.