Maison >développement back-end >Tutoriel Python >Comprendre les compréhensions de listes en Python

Comprendre les compréhensions de listes en Python

WBOY
WBOYoriginal
2024-07-16 16:18:001161parcourir

Understanding List Comprehensions in Python

Les compréhensions de listes sont une méthode puissante et efficace pour créer des listes en Python.

Ils offrent un moyen concis et lisible de générer des listes basées sur des itérables existants.

Dans l'article, j'explorerai les nuances de la compréhension de listes, leurs avantages par rapport aux boucles traditionnelles et diverses applications pratiques.


Que sont les compréhensions de liste ?

Les compréhensions de listes sont un moyen syntaxiquement compact de créer des listes en combinant le bouclage et la logique conditionnelle en une seule ligne de code.

Il en résulte une manière plus lisible et plus expressive de générer des listes, ce qui facilite la compréhension de l'intention du code en un coup d'œil.


Structure et exemples

La structure de base d'une compréhension de liste est la suivante :

[expression for item in iterable if condition]

Décomposons les composants de cette structure :

  • expression : C'est la valeur qui sera ajoutée à la nouvelle liste à chaque itération.
  • pour l'élément dans l'itérable : il s'agit de la construction en boucle qui parcourt chaque élément de l'itérable (par exemple, une liste, un tuple, un ensemble, un dictionnaire ou un générateur).
  • if condition : Il s'agit d'une instruction conditionnelle facultative qui filtre les éléments à inclure dans la nouvelle liste.

Exemples :

Compréhension de base de la liste :

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares)  

# Output: [1, 4, 9, 16, 25]

Cet exemple utilise la compréhension de liste pour créer une nouvelle liste de carrés à partir d'une liste de nombres existante.

Compréhension de liste avec une condition :

numbers = [1, 2, 3, 4, 5]
even_squares = [x**2 for x in numbers if x % 2 == 0]
print(even_squares)  

# Output: [4, 16]

Cet exemple filtre les nombres pour inclure uniquement les nombres pairs, qui sont ensuite mis au carré, démontrant l'utilisation d'une condition if dans la compréhension d'une liste.


Avantages des compréhensions de listes par rapport aux boucles traditionnelles

Les compréhensions de listes offrent plusieurs avantages par rapport aux boucles traditionnelles :

  • Brevity : les compréhensions de listes sont plus concises et plus faciles à lire que les boucles traditionnelles, ce qui rend votre code plus maintenable et plus facile à comprendre.
  • Performance : Les compréhensions de listes sont souvent plus rapides que les boucles traditionnelles car elles sont optimisées pour la création de listes.
  • Lisibilité : L'intention d'une compréhension de liste est plus claire que celle d'une boucle traditionnelle, ce qui permet aux autres de comprendre plus facilement votre code.

Applications pratiques

Les compréhensions de listes peuvent être utilisées de différentes manières pour manipuler et traiter les données.

Voici quelques cas d'utilisation courants :
Listes de filtrage :

words = ["apple", "banana", "cherry", "date"]
short_words = [word for word in words if len(word) <= 5]
print(short_words)  

# Output: ['apple', 'date']

Cet exemple filtre une liste de mots pour inclure uniquement ceux comportant 5 caractères ou moins.

Transformer les listes :

temperatures_celsius = [0, 20, 30, 40]
temperatures_fahrenheit = [(temp * 9/5) + 32 for temp in temperatures_celsius]
print(temperatures_fahrenheit)  

# Output: [32.0, 68.0, 86.0, 104.0]

Cet exemple convertit une liste de températures de Celsius en Fahrenheit.

Compréhensions de listes imbriquées :

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [num for row in matrix for num in row]
print(flattened)  

# Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]

Cet exemple aplatit une liste 2D (matrice) en une liste 1D à l'aide de compréhensions de listes imbriquées.

Création de listes de tuples :

pairs = [(x, y) for x in range(3) for y in range(3)]
print(pairs) 

# Output: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

Cet exemple génère une liste de toutes les paires (tuples) possibles de nombres à partir de deux plages.

Suppression des doublons :

list_with_duplicates = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set([x for x in list_with_duplicates]))
print(unique_list)  

# Output: [1, 2, 3, 4, 5]

Cet exemple supprime les doublons d'une liste en la convertissant en un ensemble, puis en une liste.


Sujets plus avancés

Explorons maintenant quelques sujets plus avancés concernant les variations de compréhension de liste.

Expressions génératrices
Les expressions génératrices sont similaires aux compréhensions de liste mais génèrent un itérable au lieu d'une liste.

Cela peut être plus efficace en termes de mémoire lorsque vous travaillez avec de grands ensembles de données, car les éléments sont générés à la volée plutôt que d'être stockés en mémoire d'un seul coup.

numbers = [1, 2, 3, 4, 5]
squares_generator = (x**2 for x in numbers)

for square in squares_generator:
    print(square)

# Output
# 1
# 4
# 9
# 16
# 25

Dictionnaire et compréhensions d'ensembles
Python prend également en charge les compréhensions de dictionnaires et d'ensembles, qui vous permettent de créer des dictionnaires et des ensembles de manière concise, similaire aux compréhensions de listes.

# Dictionary comprehension
numbers = [1, 2, 3, 4, 5]
squares_dict = {x: x**2 for x in numbers}
print(squares_dict)  

# Output: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}



# Set comprehension
list_with_duplicates = [1, 2, 2, 3, 4, 4, 5]
unique_set = {x for x in list_with_duplicates}
print(unique_set)  

# Output: {1, 2, 3, 4, 5}


Conclusion

Les compréhensions de listes sont un outil puissant et polyvalent en Python qui vous permet de créer des listes de manière concise et lisible.

Ils peuvent simplifier votre code, améliorer les performances et faciliter la manipulation et le traitement des données.

En maîtrisant la compréhension des listes et leurs fonctionnalités avancées, vous pouvez écrire du code Python plus efficace et plus propre.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn