Een gids voor het afvlakken van lijsten en lijsten in Python

Het omzetten van een 2D-array in een 1D-array wordt flattening genoemd. Er zijn veel benaderingen om het probleem op te lossen.

We zullen er enkele in deze tutorial onderzoeken.

Laten we een voorbeeld bekijken.

Invoer

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

Uitgang

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

#1. Lussen

De meest gebruikelijke manier om het probleem op te lossen is door loops te gebruiken. Ik denk dat de meesten van jullie het al hebben. Laten we de stappen bekijken om het probleem op te lossen met behulp van lussen.

  • Initialiseer de lijst met lijsten met dummygegevens en noem deze gegevens.
  • Initialiseer nu een lege lijst met de naam flat_list.
  • Herhaal de gegevens.
    • Pak alle elementen uit de huidige lijst uit.
    • Voeg ze toe aan de flat_list met behulp van de list append-methode.
  • Druk het resultaat af.

Zie de onderstaande code voor het probleem.

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

U kunt een andere lus gebruiken om sublijstelementen toe te voegen aan flat_list in plaats van een aaneenschakelingsoperator. We kunnen ook lijstbegrippen gebruiken in plaats van lussen.

  Herstel permanent verwijderde foto's met Recoverit Photo Recovery

Beiden doen hetzelfde werk. Laten we eens kijken naar de volgende manier om het probleem op te lossen.

#2. Itertools – Ketting

We zullen een methode genaamd chain gebruiken uit de ingebouwde module van itertools.

De methodeketen herhaalt elke sublijst en retourneert de elementen totdat er geen sublijsten meer in staan. Het retourneert een iterable die we moeten omzetten in een lijst.

Laten we eens kijken welke stappen nodig zijn om het probleem op te lossen.

  • Initialiseer de lijst met lijsten met dummygegevens en noem deze gegevens.
  • Haal de flatten iterable op met behulp van itertools.chain(*data).
  • Zet de resulterende iterabele om in een lijst.
  • Druk de flatten-lijst af.

U kunt de code in het onderstaande fragment doornemen.

# 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. Maak lijsten met meerdere niveaus plat

We hebben gezien hoe je een lijst met lijsten kunt afvlakken. De bovenstaande methoden die we hebben besproken om de lijst af te vlakken, werken niet voor lijsten met meerdere niveaus. Laten we een voorbeeld bekijken.

  Een blog starten met Google Blogger

Invoer

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

Uitgang

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

Omdat we de diepte van de lijsten vóór het programma niet kennen, moeten we recursie gebruiken om het probleem op te lossen.

  • Initialiseer de gegevens zoals getoond in het voorbeeld en noem ze gegevens.
  • Initialiseer een lege lijst met de naam flat_list.
  • Schrijf een functie genaamd flatten_list.
    • Herhaal de elementen van de gegeven lijst.
    • Als het element een lijst is, roep dan recursief dezelfde functie opnieuw aan.
    • Als het element geen lijst is, voeg het element dan toe aan de flat_list.
  • Roep de functie aan met gegevens.
  • De functie vult alle elementen in de flat_list lijst.
  • Druk de flat_list af om de uitvoer te controleren.

Opluchting! veel stappen om te coderen. Maak je geen zorgen. Het omzetten van de bovenstaande verklaringen in code duurt niet langer dan enkele 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)

Vergeet niet dat we de bestaande lijst niet hebben geconverteerd. In plaats daarvan hebben we een nieuwe lijst gemaakt met het gegeven lijstelement.

  8 SOCKS5-proxy's voor betere prestaties

Conclusie

Ik hoop dat je genoten hebt van de tutorial. Er zijn misschien veel andere manieren om een ​​lijst in Python af te vlakken, maar ik vond dat de bovenstaande waarschijnlijk de gemakkelijkste zijn.

Veel plezier met coderen 🙂

gerelateerde berichten