logo

Python – Aplatir la liste en éléments individuels

Dans cet article, nous apprendrons comment aplatir une liste de listes grâce à la compréhension de liste en Python.

Parfois, lorsque nous travaillons avec une liste Python, nous pouvons avoir un problème dans lequel nous devons effectuer un aplatissement de la liste, c'est-à-dire convertir une liste mixte en une liste aplatie. Cela peut avoir des applications dans des domaines qui utilisent des listes 1D comme entrée.



Discutons de certaines façons dont cette tâche peut être effectuée.

Exemple:

  Input  : [[1,3, 'geeks'], [4,5], [6, 'best']]   Output  : [1, 3, 'geeks', 4, 5, 6, 'best']   Explaination:   Flattening convert a mixed list to a flattened one.>

Comment aplatir la liste en éléments individuels en Python

Vous trouverez ci-dessous les méthodes que nous aborderons dans Comment aplatir une liste de listes en Python :



  • Aplatir la liste en utilisant compréhension de liste
  • Aplatir la liste en utilisant somme()
  • Aplatir la liste en utilisant boucle
  • Aplatir la liste en utilisant méthode aplatir()
  • Aplatir la liste en utilisant chaîne() avec estinstance()
  • Aplatir la liste en utilisant réduire() fonction
  • Aplatir la liste en utilisant groupby
  • Aplatir la liste en utilisant itertools.chain.from_iterable()
  • Aplatir la liste en utilisant la récursivité

1. Utiliser la compréhension de liste pour aplatir une liste de listes

Ici, nous utilisons compréhension de liste pour aplatir la liste de 2D à 1D.

Python3






res>=> [i>for> row>in> [[>1>,>3>,>'geeks'>], [>4>,>5>],> >[>6>,>'best'>]]>for> i>in> row]> print>(res)>

chaîne multiligne javascript

>

>

Sortir:

[1, 3, 'geeks', 4, 5, 6, 'best']>

Complexité temporelle : O(n) où n est le nombre d'éléments dans la liste
Espace auxiliaire : O(n) où n est le nombre d'éléments dans la liste

2. Utilisation de la fonction sum() pour aplatir une liste de listes

Ici, nous utilisons le fonction somme() dans lequel nous avons passé test_list comme objet itérable comme premier paramètre et le deuxième paramètre comme liste vide dans laquelle il stocke l'élément.

Python3




test_list>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> test_list>=> sum>(test_list, [])> print>(test_list)>

>

>

Sortir:

[1, 3, 'gfg', 4, 5, 6, 'best']>

Complexité temporelle : O(n), où n est la longueur de la liste test_list.
Espace auxiliaire : O(n) un espace supplémentaire de taille n est créé où n est le nombre d'éléments dans la liste

3. Utiliser f ou Boucler vers Aplatir une liste de listes

La combinaison des fonctionnalités ci-dessus peut être utilisée pour effectuer cette tâche. En cela, nous vérifions une instance de la liste et l'aplatissons, ainsi que le reste des éléments que nous ajoutons brutalement à la liste.

Python3




def> flatten(test_list):> >if> isinstance>(test_list,>list>):> >temp>=> []> >for> ele>in> test_list:> >temp.extend(flatten(ele))> >return> temp> >else>:> >return> [test_list]> # Initializing list> test_list>=> [>'gfg'>,>1>, [>5>,>6>,>'geeks'>],>67.4>, [>5>],>'best'>]> # Flatten List to individual elements> # using loop + isinstance()> res>=> flatten(test_list)> > # printing result> print> (>'The List after flattening : '> +> str>(res))>

>

>

Sortir:

The List after flattening : [‘gfg’, 1, 5, 6, ‘geeks’, 67.4, 5, ‘best’]>

Complexité temporelle : de cette fonction est O(n), où n est le nombre total d'éléments dans la liste imbriquée.
Complexité spatiale : de cette fonction est également O(n), car une nouvelle liste temporaire est créée pour chaque appel récursif pour stocker la sous-liste aplatie, et la liste aplatie finale est stockée dans la variable res.

4. Utilisation de la méthode flatten() pour aplatir une liste de listes

Pandas flatten() renvoie une copie du tableau réduit en une seule dimension.

contient la sous-chaîne java

Python3




from> pandas.core.common>import> flatten> l>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> print>(>list>(flatten(l)))>

>

>

Sortir:

[1, 3, 'gfg', 4, 5, 6, 'best']>

5. Vous chanter chain() avec isinstance() pour aplatir une liste de listes

C'est encore une autre façon d'accomplir cette tâche. Dans ce, lequel nous effectuons la tâche d'itération en utilisant chaîne() et vérifier les instances de liste , ce qui se fait en utilisant estinstance() .

Python3




from> itertools>import> chain> # Initializing list> test_list>=> [>'gfg'>,>1>, [>5>,>6>,>'geeks'>],>67.4>, [>5>],>'best'>]> # Flatten List to individual elements> # using chain() + isinstance()> res>=> list>(chain(>*>[ele>if> isinstance>(ele,>list>)> >else> [ele]>for> ele>in> test_list]))> > # printing result> print> (>'The List after flattening : '> +> str>(res))>

>

>

Sortir :

The List after flattening : [‘gfg’, 1, 5, 6, ‘geeks’, 67.4, 5, ‘best’]>

Complexité temporelle : Sur)
Espace auxiliaire : Sur)

6. Utilisation de la fonction réduire() pour aplatir une liste de listes

Le réduire() la fonction est définie dans le outils fonctionnels module. Il applique une fonction de deux arguments en continu sur la séquence donnée et renvoie une seule valeur.

Python3




from> functools>import> reduce> > # Initializing list> test_list>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> > # Flatten List to individual elements> # using reduce()> res>=> reduce>(>lambda> x,y: x>+>y, test_list)> > # printing result> print> (>'The List after flattening : '> +> str>(res))> #This code is contributed by Edula Vinay Kumar Reddy>

>

>

Sortir:

The List after Flattening : [1, 3, 'gfg', 4, 5, 6, 'best']>

Complexité temporelle : Sur)
Espace auxiliaire : Sur)

7. Utiliser groupby pour aplatir une liste de listes

Importer le par groupe module de itertools . Définissez une test_list de listes. Définissez une variable res comme une liste vide. Utilisez une boucle for imbriquée pour parcourir les éléments de test_list.

Pour chaque élément, vérifiez s'il s'agit d'une liste ou non. S'il s'agit d'une liste, parcourez chaque élément de la liste et ajoutez-le à la variable res. S'il ne s'agit pas d'une liste, ajoutez l'élément directement à la variable res.

tostring java

Imprimez la variable res sous forme de liste aplatie.

Python3




from> itertools>import> groupby> # Initializing list> test_list>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> # Flatten List to individual elements> # using groupby()> res>=> [i>for> j>in> test_list>for> i>in> (j>if> isinstance>(j,>list>)>else> [j])]> > # printing result> print> (>'The List after flattening : '> +> str>(res))> #This code is contributed by Rayudu.>

>

>

Sortir:

The List after flattening : [1, 3, 'gfg', 4, 5, 6, 'best']>

Complexité temporelle : La complexité temporelle du code est O(n), où n est le nombre d'éléments dans la liste d'entrée. La boucle imbriquée parcourt chaque élément de la liste d'entrée exactement une fois.
Complexité spatiale : La complexité spatiale du code est O(n), où n est le nombre d'éléments dans la liste d'entrée. La variable res est utilisée pour stocker la liste aplatie, qui peut contenir au plus n éléments.

8. Utilisation d'itertools.chain.from_iterable() pour aplatir une liste de listes

Dans cet exemple, le code ci-dessous utilise le itertools.chain.from_iterable() méthode pour aplatir une liste imbriquée.

Décomposons le code et expliquons : Le code ci-dessous utilise `itertools.chain.from_iterable()` pour aplatir une liste imbriquée (`nested_list`) en une seule liste (`flattened_list`), puis imprime le résultat.

Python3




from> itertools>import> chain> nested_list>=> [[>1>,>2>,>3>], [>4>,>5>], [>6>,>7>,>8>]]> flattened_list>=> list>(chain.from_iterable(nested_list))> print>(flattened_list)>

>

>

Sortir :

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

Complexité temporelle : Sur)
Espace auxiliaire : Sur)

9. Utiliser la récursivité pour Aplatir une liste de listes

Dans cet exemple, le code ci-dessous définit une fonction flatten_list qui prend une liste imbriquée en entrée et renvoie une liste aplatie avec des éléments individuels. L'aplatissement est réalisé en utilisant récursivité .

Python3

étincelle de pyspark




def> flatten_list(lst):> >flat_list>=> []> >for> item>in> lst:> >if> isinstance>(item,>list>):> >flat_list.extend(flatten_list(item))> >else>:> >flat_list.append(item)> >return> flat_list> nested_list>=> [[>1>,>2>,>3>], [>4>, [>5>,>6>]], [>7>,>8>]]> flattened_list>=> flatten_list(nested_list)> print>(flattened_list)>

>

>

Sortir :

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

Complexité temporelle : Sur)
Espace auxiliaire : Sur)

Nous avons couvert 9 façons totales d’aplatir une liste de listes. L'aplatissement de liste en Python est utilisé pour convertir une liste de listes imbriquées en une seule liste. Vous pouvez utiliser l’une des méthodes ci-dessus pour aplatir votre liste en fonction de vos besoins.

Lectures similaires :

  • Aplatir une liste chaînée
  • Programme Python pour aplatir une liste chaînée
  • Python | Aplatissement groupé de la liste