Eine Anleitung zum Abflachen von Listen und Listen in Python

Das Konvertieren eines 2D-Arrays in ein 1D-Array wird als Flattening bezeichnet. Es gibt viele Ansätze, um das Problem zu lösen.

Wir werden einige davon in diesem Tutorial untersuchen.

Sehen wir uns ein Beispiel an.

Eingang

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

Ausgabe

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

#1. Schleifen

Die häufigste Methode zur Lösung des Problems ist die Verwendung von Schleifen. Ich denke, die meisten von euch haben es schon verstanden. Sehen wir uns die Schritte zur Lösung des Problems mit Schleifen an.

  • Initialisieren Sie die Liste der Listen mit Dummy-Daten und benennen Sie sie als Daten.
  • Initialisieren Sie nun eine leere Liste namens flat_list.
  • Iterieren Sie über die Daten.
    • Entpacken Sie alle Elemente aus der aktuellen Liste.
    • Fügen Sie sie mit der list append-Methode zur flat_list hinzu.
  • Drucken Sie das Ergebnis aus.

Sehen Sie sich den Code für das Problem unten an.

# initializing the data and an empty list
data = [[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]
flat_list = []

# iterating over the data
for item in data:
    # appending elements to the flat_list
    flat_list += item

# printing the resultantn flat_list
print(flat_list)

Sie können eine andere Schleife verwenden, um Unterlistenelemente anstelle eines Verkettungsoperators zu flat_list hinzuzufügen. Wir können auch Listenverständnisse anstelle von Schleifen verwenden.

  Tauschen Sie Breaking Bad-inspirierte Grüße mit der neuen App von Aaron Paul aus

Beide machen die gleiche Arbeit. Sehen wir uns den nächsten Weg an, um das Problem zu lösen.

#2. Itertools – Kette

Wir werden eine Methode namens chain aus dem integrierten Modul von itertools verwenden.

Die Methodenkette iteriert über jede Unterliste und gibt die Elemente zurück, bis keine Unterlisten mehr darin enthalten sind. Es gibt ein Iterable zurück, das wir in eine Liste umwandeln müssen.

Sehen wir uns die Schritte zur Lösung des Problems an.

  • Initialisieren Sie die Liste der Listen mit Dummy-Daten und benennen Sie sie als Daten.
  • Holen Sie sich das Flatten-Iterable mit itertools.chain(*data).
  • Wandeln Sie das resultierende Iterable in eine Liste um.
  • Drucken Sie die Flatten-Liste.

Sie können den Code im folgenden Snippet durchgehen.

# importing the module
import itertools

# initializing the data
data = [[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]

# flattening the list and storing the result
flat_list = itertools.chain(*data)

# converting iterable to list and printing
print(list(flat_list))

#3. Reduzieren Sie mehrstufige Listen

Wir haben gesehen, wie man eine Liste von Listen vereinfacht. Die obigen Methoden, die wir zum Vereinfachen der Liste besprochen haben, funktionieren nicht für Listen mit mehreren Ebenen. Sehen wir uns ein Beispiel an.

  Generieren Sie mit diesen 10 Tools einen eindeutigen Unternehmensnamen

Eingang

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

Ausgabe

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

Da wir die Tiefe der Listen vor dem Programm nicht kennen, müssen wir Rekursion verwenden, um das Problem zu lösen.

  • Initialisieren Sie die Daten wie im Beispiel gezeigt und benennen Sie sie als Daten.
  • Initialisieren Sie eine leere Liste namens flat_list.
  • Schreiben Sie eine Funktion namens flatten_list.
    • Iteriere über die Elemente der gegebenen Liste.
    • Wenn das Element eine Liste ist, rufen Sie dieselbe Funktion erneut rekursiv auf.
    • Wenn das Element keine Liste ist, hängen Sie das Element an die flat_list an.
  • Rufen Sie die Funktion mit Daten auf.
  • Die Funktion füllt alle Elemente in der Liste flat_list.
  • Drucken Sie die flat_list, um die Ausgabe zu überprüfen.
  Ein vergleichender Leitfaden für Blockchain-Konsensalgorithmen: PoW vs. PoS

Puh! viele Schritte zum Coden. Mach dir keine Sorgen. Das Konvertieren der obigen Anweisungen in Code dauert nicht länger als Minuten.

# initializing the data and empty list
data = [1, [2, 3, [4, 5]], 6, [[7], [8, 9]]]
flat_list = []

# function
def flatten_list(data):
    # iterating over the data
    for element in data:
        # checking for list
        if type(element) == list:
            # calling the same function with current element as new argument
            flatten_list(element)
        else:
            flat_list.append(element)

# flattening the given list
flatten_list(data)

# printing the flat_list
print(flat_list)

Denken Sie daran, dass wir die vorhandene Liste nicht konvertiert haben. Stattdessen haben wir eine neue Liste mit dem angegebenen Listenelement erstellt.

Fazit

Ich hoffe, Ihnen hat das Tutorial gefallen. Es könnte viele andere Möglichkeiten geben, eine Liste in Python zu glätten, aber ich fand, dass die oben genannten wahrscheinlich die einfachsten sind.

Viel Spaß beim Programmieren 🙂