Compréhension de liste en Python - avec des exemples
Publié: 2022-02-18En Python, les compréhensions de liste vous aident à créer de nouvelles listes à partir d'itérables existants, comme des listes, des chaînes et des tuples.
Leur syntaxe succincte vous permet de créer de nouvelles listes en une seule ligne de code. Et ce tutoriel vous apprendra comment vous pouvez le faire.
Au cours des prochaines minutes, vous apprendrez :
- Comment créer une nouvelle liste en utilisant
for
boucles for, - La syntaxe pour utiliser les compréhensions de liste en Python, et
- Comment modifier les compréhensions de liste avec l'instruction conditionnelle
if
.
De plus, vous allez également coder plusieurs exemples qui vous aideront à mieux comprendre les compréhensions de liste.
Plongeons dedans.
Comment créer des listes Python à l'aide de boucles for
Supposons que vous ayez une liste de nombres nums
. Et vous aimeriez créer une autre liste qui contient le cube de tous les nombres en nums
. Voici comment vous allez le faire en utilisant une boucle for
en Python :
nums = [2,3,5,7] num_cubes = [] for num in nums: num_cubes.append(num**3) print(num_cubes) # Output [8, 27, 125, 343]
Dans le code ci-dessus, nous avons les étapes suivantes :
- Initialise une liste vide
num_cubes
. -
nums
la liste des chiffres. - Accédez à chaque nombre
num
et calculez son cube à l'aide de l'opérateur d'exponentiation :num**3
. - Enfin, ajoutez la valeur au cube à la liste
num_cubes
Remarque : en Python, l'opérateur d'exponentiation
**
est utilisé avec la syntaxe :num**pow
—le nombrenum
est élevé à la puissancepow
.
Cependant, vous pouvez le faire plus facilement en utilisant la compréhension de liste en Python. Continuons à apprendre sa syntaxe.
Syntaxe de compréhension de liste Python
La syntaxe générale pour la compréhension de liste est présentée ci-dessous.
<new_list> = [<expression> for <item> in <iterable>]
Analysons la syntaxe ci-dessus.
- En Python, les listes sont délimitées par une paire de crochets
[]
— vous devez donc encadrer la déclaration de compréhension de liste entre[]
. -
<item>
dans<iterable>
signifie que vous parcourez un itérable. Tout objet Python que vous pouvez parcourir et accéder à des éléments individuels, tels que des listes, des tuples et des chaînes, est itérable. -
<expression>
est la sortie que vous souhaitez calculer pour chaque<item>
dans le<iterable>
.
Et cela semble simple, n'est-ce pas ?
Essentiellement, vous aimeriez faire quelque chose pour tous les éléments de la liste (ou tout itérable) pour obtenir une nouvelle list .
En utilisant cela, nous pouvons simplifier la syntaxe, comme le montre l'image ci-dessous.

Maintenant que vous avez appris la syntaxe, il est temps de commencer à coder. Vous pouvez utiliser l'IDE Python en ligne de Geekflare pour suivre ces exemples. Ou vous pouvez les exécuter sur votre machine locale.
Exemples de compréhension de liste Python
Dans la section précédente, vous avez créé une nouvelle liste num_cubes
à partir de nums
. Commençons par réécrire cela en utilisant la compréhension de liste.
Utilisation de la compréhension de liste avec des nombres
Utilisons maintenant la syntaxe simplifiée comme suit :
-
<do-this>
: Ici, vous devez mettre au cube chaquenum
. Remplacez donc<do-this>
parnum**3
. -
<all-items>
: La variable de bouclage estnum
— les numéros individuels de la liste. -
<this-list>
: La liste existante que nous avons estnums
. - Et
[num**3 for num in nums]
est l'expression finale.
En mettant tout cela ensemble, nous avons l'extrait de code suivant :
num_cubes = [num**3 for num in nums] print(num_cubes) # Output [8, 27, 125, 343]
Félicitations, vous avez codé votre première compréhension de liste.
Passons à autre chose, travaillons avec des chaînes Python.
Utilisation de la compréhension de liste avec des chaînes
Supposons que vous ayez la liste des authors
- vous pouvez réécrire la liste ci-dessous avec vos auteurs préférés.
authors = ["jane austen","george orwell","james clear","cal newport"]
Remarquez comment les noms des auteurs sont en minuscules dans la liste ci-dessus. Nous aimerions maintenant les formater dans la casse du titre et les stocker dans une nouvelle liste appelée author_list
.
Remarque : En Python, la méthode de chaîne title() accepte une chaîne comme argument et renvoie une copie de la chaîne formatée dans la casse du titre. C'est-à-dire que la première lettre de chaque mot est en majuscule :
First-name Last-name
Voici donc tout ce que vous devez faire :
- parcourir la liste des
authors
et pour chaqueauthor
de la liste, - appelez
author.title()
pour obtenir une copie de la chaîne avec la casse du titre.
Et le code Python pour cela est illustré ci-dessous :
authors = ["jane austen","george orwell","james clear","cal newport"] author_list = [author.title() for author in authors] print(author_list) # Output ['Jane Austen', 'George Orwell', 'James Clear', 'Cal Newport']
Dans la sortie ci-dessus, observez comment les noms de tous les auteurs ont été formatés dans la casse du titre, ce que nous voulions.

Utilisation de la compréhension de liste avec plusieurs listes
Jusqu'à présent, vous avez appris à utiliser la compréhension de liste pour créer de nouvelles listes à partir d'une liste existante. Voyons maintenant comment créer une nouvelle liste à partir de plusieurs listes.
Par exemple, considérez ce problème : Vous avez deux listes l_arr
et b_arr
contenant les longueurs et largeurs de 4 rectangles.
Et vous devez créer une nouvelle area
de liste qui inclut la zone de ces 4 rectangles. N'oubliez pas, area = length * breadth
.
l_arr = [4,5,1,3] b_arr = [2,1,7,9]
Vous aurez besoin d'éléments des deux listes ( l_arr
et b_arr
) pour calculer la surface. Et vous pouvez le faire en utilisant la fonction zip()
de Python.
Remarque : En Python, la fonction
zip()
prend un ou plusieurs itérables comme arguments avec la syntaxezip(*iterables)
. Il renvoie ensuite un itérateur de tuples, où le tuplei
contient l'élémenti
de chacun des itérables.
L'image suivante décrit cela en détail. Vous avez 4 valeurs dans l_arr
et b_arr
, donc la plage d'indices est de 0 à 3. Comme vous pouvez le voir, le tuple 0
contient l_arr[0]
et b_arr[0]
, le tuple 1
contient l_arr[1]
et b_arr[1]
, et ainsi de suite.

Par conséquent, vous pouvez parcourir zip(l_arr,b_arr)
comme indiqué ci-dessous :
area = [l*b for l,b in zip(l_arr,b_arr)] print(area) # Output [8,5,7,27]
Dans la section suivante, vous apprendrez à utiliser des instructions conditionnelles dans une compréhension de liste.
Compréhension de liste Python avec syntaxe de condition
Commençons par construire sur la syntaxe précédente pour la compréhension de liste.
Voici la syntaxe :
<new_list> = [<expression> for <item> in <iterable> if <condition>]
Au lieu de calculer l' <expression>
pour tous les éléments, vous ne souhaitez le faire que pour les éléments qui satisfont une <condition>
spécifique —where, condition := True
. Et cela conduit à une syntaxe simplifiée comme indiqué :

Sur ce, passons aux exemples de code.
Compréhension de la liste Python avec des exemples de conditions
#1. Vous recevez la chaîne "J'apprends Python en 2022" . Vous souhaitez obtenir une liste de tous les chiffres de cette chaîne. Alors, comment faites-vous?
En Python,
<char>.isdigit()
agit sur un caractère<char>
et renvoieTrue
si c'est un chiffre (0-9) ; sinon, il renvoieFalse
.
L'extrait de code ci-dessous montre comment vous pouvez collecter la liste de tous les chiffres de la chaîne str1
.
str1 = "I'm learning Python3 in 2022" digits = [char for char in str1 if char.isdigit()] print(digits) # Output ['3', '2', '0', '2', '2']
Dans le code ci-dessus :
- vous parcourez la chaîne
str1
, - accéder à chaque
char
pour vérifier s'il s'agit d'un chiffre à l'aide de la méthodeisdigit()
, et - ajouter
char
aux nouveauxdigits
de la liste uniquement s'il s'agit d'un chiffre.
Prenons un autre exemple.
#2. Vous avez une liste de fruits. Et vous aimeriez créer une liste starts_with_b
contenant tous les fruits de la liste de fruits
commençant par b
. Vous pouvez utiliser la méthode startswith()
pour écrire la condition.
Le
<str>.startswith('char')
renvoieTrue
si <str> commence par 'char' ; sinon, il renvoieFalse
.
fruits = ['blueberry','apple','banana','orange','cherry'] starts_with_b = [fruit for fruit in fruits if fruit.startswith('b')] print(starts_with_b) # Output ['blueberry', 'banana']
Dans la sortie ci-dessus, nous obtenons 'blueberry'
et 'banana'
qui sont les deux fruits qui commencent par 'b'
dans la liste des fruits
, comme nous nous y attendions.
Et cela conclut notre discussion sur la compréhension des listes.
Conclusion
J'espère que ce tutoriel vous a aidé à comprendre les compréhensions de liste en Python.
Résumons :
- Vous pouvez utiliser [<do this> for <all-items> in <this-list>] pour créer une nouvelle liste en utilisant la compréhension de liste.
- De plus, vous pouvez utiliser la syntaxe [<do this> for <all-items> in <this-list> if <condition-is-True>] avec l'instruction conditionnelle
if
.
De plus, vous avez également codé plusieurs exemples. Dans une prochaine étape, vous pouvez essayer de réécrire certaines de vos boucles Python existantes pour la création de listes à l'aide de la compréhension de liste. Bon codage ! Jusqu'au prochain tuto.
Vous pouvez maintenant voir comment convertir une liste en dictionnaire ou apprendre à gérer des fichiers en Python.