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]
Indholdsfortegnelse
#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.
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.
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.
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 🙂