Konvertering av en 2D-matrise til en 1D-matrise kalles flatting. Det er mange måter å løse problemet på.
Vi vil utforske noen av dem i denne opplæringen.
La oss se et eksempel.
Inndata
[[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]
Produksjon
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Innholdsfortegnelse
#1. Løkker
Den vanligste måten å løse problemet på er å bruke løkker. Jeg tror de fleste av dere allerede har skjønt det. La oss se trinnene for å løse problemet ved hjelp av loops.
- Initialiser listen over lister med dummydata og navngi den som data.
- Initialiser nå en tom liste kalt flat_list.
- Iterer over dataene.
- Pakk ut alle elementene fra gjeldende liste.
- Legg dem til flat_list ved å bruke listen append-metoden.
- Skriv ut resultatet.
Se koden for 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 bruke en annen sløyfe for å legge til underlisteelementer til flat_list i stedet for en sammenkoblingsoperator. Vi kan også bruke listeforståelser i stedet for løkker.
Begge gjør det samme arbeidet. La oss se den neste måten å løse problemet på.
#2. Itertools – Kjede
Vi vil bruke en metode kalt kjede fra itertools innebygde modul.
Metodekjeden itererer over hver underliste og returnerer elementene til det ikke er noen underlister i den. Den returnerer en iterabel som vi må konvertere den til en liste.
La oss se trinnene som er involvert i å løse problemet.
- Initialiser listen over lister med dummydata og navngi den som data.
- Få den flate iterable ved å bruke itertools.chain(*data).
- Konverter den resulterende iterable til en liste.
- Skriv ut den flate listen.
Du kan gå gjennom koden i utdraget nedenfor.
# 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. Flat lister på flere nivåer
Vi har sett hvordan du kan flate ut en liste med lister. Metodene ovenfor som vi har diskutert for å flate ut listen, vil ikke fungere for lister med flere nivåer. La oss se et eksempel.
Inndata
[1, [2, 3, [4, 5]], 6, [[7], [8, 9]]]
Produksjon
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Siden vi ikke kjenner dybden på listene før programmet, må vi bruke rekursjon for å løse problemet.
- Initialiser dataene som vist i eksemplet og navngi dem som data.
- Initialiser en tom liste kalt flat_list.
- Skriv en funksjon kalt flatten_list.
- Iterer over elementene i den gitte listen.
- Hvis elementet er en liste, kall den samme funksjonen rekursivt igjen.
- Hvis elementet ikke er en liste, legger du elementet til flat_list.
- Aktiver funksjonen med data.
- Funksjonen vil fylle alle elementene i flat_list-listen.
- Skriv ut flat_list for å sjekke utdataene.
Puh! mange trinn for å kode. Ikke bekymre deg. Konvertering av setningene ovenfor til kode vil ikke ta mer enn 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 konverterte den eksisterende listen. I stedet har vi laget en ny liste med det gitte listeelementet.
Konklusjon
Håper du likte veiledningen. Det kan være mange andre måter å flate ut en liste i Python, men jeg følte at ovennevnte sannsynligvis er de enkleste.
Lykke til med koding 🙂