Compréhensions Python : compréhensions de listes, de dictés et d'ensembles

Écrivez du Python plus propre et plus rapide. Liste principale, dictionnaire et compréhensions d'ensembles avec des exemples pratiques, des conditions de filtrage et des boucles imbriquées.

Essayez dans l'éditeur

Aperçu

Les compréhensions sont l'une des fonctionnalités les plus appréciées de Python, offrant une syntaxe concise et hautement lisible pour créer de nouvelles collections (listes, dictionnaires et ensembles) à partir d'itérables existants. Plutôt que d'écrire des boucles « for » sur plusieurs lignes et d'ajouter manuellement des éléments, les compréhensions vous permettent d'effectuer les mêmes transformations, filtrages et affectations dans une seule ligne de code expressive.

Les compréhensions de liste sont la variante la plus courante, structurée comme « [expression pour l'élément dans une condition itérable si] ». Sous le capot, Python optimise les compréhensions pour s'exécuter à une vitesse proche de C, surpassant souvent les boucles « for » manuelles équivalentes car la boucle est gérée par l'interpréteur sous-jacent. Ils sont idéaux pour des transformations rapides, telles que la conversion d'une liste de températures Celsius en Fahrenheit ou l'extraction de clés spécifiques d'une liste d'enregistrements utilisateur.

Au-delà des listes, Python prend en charge les compréhensions de dictionnaires et d'ensembles. Une compréhension de dictionnaire, définie avec des accolades et des paires clé-valeur (par exemple, `{key: value for x in iterable}`), est très utile pour inverser les paires de mappage ou analyser les métadonnées. Les compréhensions d'ensembles génèrent des collections uniques en supprimant automatiquement les doublons. Bien que les compréhensions soient incroyablement puissantes, les développeurs doivent éviter de les compliquer excessivement ; si une compréhension nécessite des boucles imbriquées ou des conditions complexes, une boucle « for » traditionnelle est généralement plus facile à lire et à maintenir.

Sortie de code et d'exécution

Illustre les transformations de liste, le filtrage conditionnel et la création d'un dictionnaire à partir des entrées de mappage.

comprehensions.py
Essayez dans l'éditeur
numbers = [1, 2, 3, 4, 5, 6]

# List comprehension with filter (even squares)
even_squares = [x**2 for x in numbers if x % 2 == 0]

# Set comprehension (unique word lengths)
words = ["python", "java", "ruby", "python"]
word_lengths = {len(w) for w in words}

# Dictionary comprehension (number: square)
square_map = {n: n**2 for n in numbers[:4]}

print(f"Even squares: {even_squares}")
print(f"Unique lengths: {word_lengths}")
print(f"Square mapping: {square_map}")
Sortie terminale
Even squares: [4, 16, 36]
Unique lengths: {4, 6}
Square mapping: {1: 1, 2: 4, 3: 9, 4: 16}

Mise en œuvre étape par étape

  • Filtrage des valeurs vides ou des données invalides des journaux
  • Mappage des charges utiles de l'API dans des mappages de données clé-valeur
  • Formatage rapide des lignes de la base de données en listes simples

Foire aux questions

Les compréhensions sont-elles plus rapides que les boucles normales ?

Oui, dans la plupart des cas, ils sont plus rapides car l'itération est gérée par du code C optimisé dans l'interpréteur Python.

Dois-je toujours utiliser des compréhensions ?

Non. La lisibilité du code est la priorité de Python. Si la compréhension a une logique imbriquée ou est plus longue qu’une ou deux lignes, une boucle traditionnelle est préférable.

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.