Comment utiliser la compréhension de liste en Python

Apprenez à utiliser les compréhensions de listes en Python. Écrivez des boucles concises, appliquez des filtres conditionnels et créez des matrices avec une syntaxe visuelle claire.

Essayez cette solution dans l'éditeur

Aperçu

La compréhension de liste est l'une des fonctionnalités les plus populaires et les plus emblématiques de Python. Il offre une syntaxe concise, expressive et hautement lisible pour créer une nouvelle liste à partir d'un itérable existant (comme une liste, une plage ou un tuple). Il vous permet de remplacer les boucles « for » multilignes et les instructions d'initialisation de liste par une seule ligne de code.

La syntaxe de base d'une compréhension de liste est « [expression pour l'élément dans un itérable] ». Sous le capot, cette syntaxe est hautement optimisée dans l'implémentation de Python, ce qui la rend plus rapide que les boucles « for » standard qui ajoutent des éléments à l'aide de « .append() ». Il est idéal pour appliquer des transformations mathématiques ou modifier des éléments.

Les compréhensions de liste prennent également en charge le filtrage conditionnel à l'aide de clauses « if », vous permettant d'inclure sélectivement des éléments (par exemple, « [x for x in data if x % 2 == 0] »). Bien qu’incroyablement puissantes, les compréhensions de listes doivent être utilisées avec précaution : si votre compréhension est très complexe ou imbriquée, il est préférable d’écrire des boucles standard pour maintenir la lisibilité.

Sortie de code et d'exécution

Ce script montre les compréhensions de base des listes, le filtrage avec des conditions et la transformation des valeurs de chaîne.

list_comprehensions.py
Essayez dans l'éditeur
# 1. Traditional for-loop way to build a list
squares_loop = []
for x in range(1, 6):
    squares_loop.append(x**2)
print("Loop squares:", squares_loop)

# 2. List comprehension way (same outcome)
squares_comp = [x**2 for x in range(1, 6)]
print("Comp squares:", squares_comp)

# 3. Filtering elements with an 'if' clause (even numbers only)
evens = [n for n in range(1, 11) if n % 2 == 0]
print("Even numbers:", evens)

# 4. String modifications using comprehensions
names = ["alice", "bob", "charlie"]
caps = [name.capitalize() for name in names]
print("Capitalized:", caps)
Sortie terminale
Loop squares: [1, 4, 9, 16, 25]
Comp squares: [1, 4, 9, 16, 25]
Even numbers: [2, 4, 6, 8, 10]
Capitalized: ['Alice', 'Bob', 'Charlie']

Mise en œuvre étape par étape

  • Identifiez le corps de la boucle et l'expression que vous souhaitez capturer dans la liste.
  • Structurez la compréhension comme [expression pour l'élément en itérable].
  • Ajoutez une condition if facultative à la fin pour filtrer les éléments de manière dynamique.

Foire aux questions

Puis-je utiliser des instructions if-else dans une compréhension de liste ?

Oui ! Placez la clause if-else avant la boucle for : [x if x > 0 else 0 for x in data].

Quelles sont les différences entre les compréhensions de liste et les expressions génératrices ?

Les compréhensions de listes utilisent des crochets et renvoient instantanément une liste complète. Les expressions génératrices utilisent des parenthèses et renvoient un objet générateur paresseux, qui économise de la mémoire pour les grands ensembles de données.

Sujets connexes

Ressources Python recommandées

Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.