En guide til at udjævne liste og liste over lister i Python

Konvertering af et 2D-array til et 1D-array kaldes fladning. Der er mange tilgange til at løse problemet.

Vi vil udforske nogle af dem i denne tutorial.

Lad os se et eksempel.

Input

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

Produktion

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

#1. Sløjfer

Den mest almindelige måde at løse problemet på er ved at bruge loops. Jeg tror, ​​de fleste af jer allerede har fået det. Lad os se trinene til at løse problemet ved hjælp af loops.

  • Initialiser listen over lister med dummy-data, og navngiv den som data.
  • Initialiser nu en tom liste kaldet flat_list.
  • Gentag over dataene.
    • Pak alle elementerne ud fra den aktuelle liste.
    • Tilføj dem til flat_list ved hjælp af list append-metoden.
  • Print resultatet.

Se koden til problemet nedenfor.

# 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)

Du kan bruge en anden løkke til at tilføje underlisteelementer til flat_list i stedet for en sammenkædningsoperator. Vi kan også bruge listeforståelser i stedet for loops.

  Sådan søger du efter produkter, der sælges og sendes af Amazon selv

Begge udfører det samme arbejde. Lad os se den næste måde at løse problemet på.

#2. Itertools – Kæde

Vi vil bruge en metode kaldet kæde fra itertools indbyggede modul.

Metodekæden itererer over hver underliste og returnerer elementerne, indtil der ikke er nogen underlister i den. Det returnerer en iterabel, som vi skal konvertere den til en liste.

Lad os se de trin, der er involveret i at løse problemet.

  • Initialiser listen over lister med dummy-data, og navngiv den som data.
  • Få flad iterable ved hjælp af itertools.chain(*data).
  • Konverter den resulterende iterable til en liste.
  • Udskriv fladlisten.
  Sådan får du vist udklipsholderhistorik i Microsoft Office

Du kan gennemgå koden i nedenstående uddrag.

# 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. Udjævn lister med flere niveauer

Vi har set, hvordan man udjævner en liste over lister. Ovenstående metoder, som vi har diskuteret for at udjævne listen, virker ikke for lister med flere niveauer. Lad os se et eksempel.

Input

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

Produktion

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

Da vi ikke kender dybden af ​​listerne før programmet, er vi nødt til at bruge rekursion for at løse problemet.

  • Initialiser dataene som vist i eksemplet, og navngiv dem som data.
  • Initialiser en tom liste kaldet flat_list.
  • Skriv en funktion kaldet flatten_list.
    • Gentag over elementerne i den givne liste.
    • Hvis elementet er en liste, skal du kalde den samme funktion rekursivt igen.
    • Hvis elementet ikke er en liste, skal du tilføje elementet til flat_list.
  • Aktiver funktionen med data.
  • Funktionen vil udfylde alle elementer i flat_list listen.
  • Udskriv flat_list for at kontrollere outputtet.
  Sådan får du adgang til Microsoft Edge about:flags-siden

Puha! en masse trin til at kode. Bare rolig. Konvertering af ovenstående udsagn til kode vil ikke tage mere end minutter.

# 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)

Husk, at vi ikke konverterede den eksisterende liste. I stedet har vi lavet en ny liste med det givne listeelement.

Konklusion

Håber du har nydt tutorialen. Der kan være mange andre måder at udjævne en liste i Python, men jeg følte, at ovenstående nok er de nemmeste.

God kodning 🙂