logo

Compréhensions de listes imbriquées en Python

La compréhension des listes est l'une des fonctionnalités les plus étonnantes de Python . C'est une manière intelligente et concise de créer des listes en itérant sur un objet itérable. Les compréhensions de listes imbriquées ne sont rien d'autre qu'une compréhension de liste au sein d'une autre compréhension de liste qui est assez similaire aux boucles for imbriquées.

Compréhension de listes imbriquées dans la syntaxe Python

Vous trouverez ci-dessous la syntaxe des imbriqués compréhension de liste :



Syntaxe: new_list = [[expression pour l'élément dans la liste] pour l'élément dans la liste]

Paramètres:

  • Expression : Expression utilisée pour modifier chaque élément de l'instruction
  • Article: L'élément dans l'itérable
  • Liste: Un objet itérable

Exemples de compréhension de listes imbriquées Python

Vous trouverez ci-dessous quelques exemples de compréhension de listes imbriquées :



Exemple 1: Créer une matrice

Dans cet exemple, nous comparerons comment nous pouvons créer une matrice quand nous le créons avec

Sans compréhension de liste

Dans cet exemple, une matrice 5×5 est créée à l’aide d’une structure de boucle imbriquée. Une boucle externe itère cinq fois, ajoutant des sous-listes vides aumatrix>, tandis qu'une boucle interne remplit chaque sous-liste avec des valeurs allant de 0 à 4, ce qui donne une matrice avec des valeurs entières consécutives.



constructeur python

Python3




matrix>=> []> for> i>in> range>(>5>):> ># Append an empty sublist inside the list> >matrix.append([])> >for> j>in> range>(>5>):> >matrix[i].append(j)> print>(matrix)>

>

>

Sortir

[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]>

Utiliser la compréhension de liste

Le même résultat peut être obtenu en utilisant la compréhension de listes imbriquées sur une seule ligne. Dans cet exemple, une matrice 5×5 est générée à l’aide d’une compréhension de liste imbriquée. La compréhension externe itère cinq fois, représentant les lignes, tandis que la compréhension interne remplit chaque ligne avec des valeurs allant de 0 à 4, ce qui donne une matrice avec des valeurs entières consécutives.

Python3




# Nested list comprehension> matrix>=> [[j>for> j>in> range>(>5>)]>for> i>in> range>(>5>)]> print>(matrix)>

>

>

Sortir

[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]>

Exemple 2 : Filtrage d'une liste imbriquée à l'aide de la compréhension de liste

Ici, nous verrons comment filtrer une liste avec et sans utiliser la compréhension de liste.

Sans utiliser la compréhension de liste

Dans cet exemple, une boucle imbriquée parcourt une matrice 2D, extrayant les nombres impairs de la liste Python dans la liste et les ajoutant à la liste.odd_numbers>. La liste résultante contient tous les éléments impairs de la matrice.

Python3




matrix>=> [[>1>,>2>,>3>], [>4>,>5>,>6>], [>7>,>8>,>9>]]> odd_numbers>=> []> for> row>in> matrix:> >for> element>in> row:> >if> element>%> 2> !>=> 0>:> >odd_numbers.append(element)> print>(odd_numbers)>

>

liste des polices dans Gimp
>

Sortir

[1, 3, 5, 7, 9]>

Utiliser la compréhension de liste

Dans cet exemple, une compréhension de liste est utilisée pour générer succinctement la listeodd_numbers>en parcourant les éléments d'une matrice 2D. Seuls les éléments impairs sont inclus dans la liste résultante, offrant une alternative concise et lisible à la structure de boucle imbriquée équivalente.

Python3




matrix>=> [[>1>,>2>,>3>], [>4>,>5>,>6>], [>7>,>8>,>9>]]> odd_numbers>=> [> >element>for> row>in> matrix>for> element>in> row>if> element>%> 2> !>=> 0>]> print>(odd_numbers)>

>

>

Sortir

[1, 3, 5, 7, 9]>

Exemple 3 : Aplatir les sous-listes imbriquées

Sans compréhension de liste

convertir la chaîne en entier

Dans cet exemple, une liste 2D nomméematrix>avec des longueurs de sous-listes variables est aplati à l'aide de boucles imbriquées. Les éléments de chaque sous-liste sont ajoutés séquentiellement à la listeflatten_matrix>, ce qui donne une représentation aplatie de la matrice d'origine.

Python3




# 2-D List> matrix>=> [[>1>,>2>,>3>], [>4>,>5>], [>6>,>7>,>8>,>9>]]> flatten_matrix>=> []> for> sublist>in> matrix:> >for> val>in> sublist:> >flatten_matrix.append(val)> print>(flatten_matrix)>

>

>

Sortir

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

Avec compréhension de liste

Encore une fois, cela peut être fait en utilisant la compréhension de listes imbriquées illustrée ci-dessous. Dans cet exemple, une liste 2D nomméematrix>avec des longueurs de sous-listes variables est aplati à l'aide de la compréhension de listes imbriquées. L'expression[val for sublist in matrix for val in sublist]>génère succinctement une liste aplatie en incluant séquentiellement chaque élément des sous-listes.

Python3




# 2-D List> matrix>=> [[>1>,>2>,>3>], [>4>,>5>], [>6>,>7>,>8>,>9>]]> # Nested List Comprehension to flatten a given 2-D matrix> flatten_matrix>=> [val>for> sublist>in> matrix>for> val>in> sublist]> print>(flatten_matrix)>

modifier ajouter une colonne oracle

>

>

Sortir

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

Exemple 4 : manipuler une chaîne à l'aide de la compréhension de liste

Sans compréhension de liste

Dans cet exemple, une liste 2D nomméematrix>contenant des chaînes est modifié à l'aide d'imbriqués boucles . La boucle interne met en majuscule la première lettre de chaque fruit et la boucle externe construit une nouvelle liste 2D,modified_matrix>, avec les fruits en majuscules, ce qui donne une matrice de chaînes avec des lettres majuscules initiales.

Python3




matrix>=> [[>'apple'>,>'banana'>,>'cherry'>],> >[>'date'>,>'fig'>,>'grape'>],> >[>'kiwi'>,>'lemon'>,>'mango'>]]> modified_matrix>=> []> for> row>in> matrix:> >modified_row>=> []> >for> fruit>in> row:> >modified_row.append(fruit.capitalize())> >modified_matrix.append(modified_row)> print>(modified_matrix)>

>

>

Sortir

moncricketlive
[['Apple', 'Banana', 'Cherry'], ['Date', 'Fig', 'Grape'], ['Kiwi', 'Lemon', 'Mango']]>

Avec compréhension de liste

Dans cet exemple, une liste 2D nomméematrix>contenant des chaînes est transformé en utilisant la compréhension de liste imbriquée. L'expression[[fruit.capitalize() for fruit in row] for row in matrix]>génère efficacement une matrice modifiée où la première lettre de chaque fruit est en majuscule, ce qui donne une nouvelle matrice de chaînes avec des lettres majuscules initiales.

Python3




matrix>=> [[>'apple'>,>'banana'>,>'cherry'>],> >[>'date'>,>'fig'>,>'grape'>],> >[>'kiwi'>,>'lemon'>,>'mango'>]]> modified_matrix>=> [[fruit.capitalize()>for> fruit>in> row]>for> row>in> matrix]> print>(modified_matrix)>

>

>

Sortir

[['Apple', 'Banana', 'Cherry'], ['Date', 'Fig', 'Grape'], ['Kiwi', 'Lemon', 'Mango']]>