List Comprehension
Introduction à la compréhension de liste
La compréhension de liste est un moyen concis et puissant de créer des listes en Python, vous permettant de générer, transformer et filtrer des listes en une seule ligne de code.
Syntaxe de base
## Basic list comprehension structure
new_list = [expression for item in iterable]
## Example: Creating a list of squares
squares = [x**2 for x in range(10)]
## Result: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Types de compréhension
## Converting strings to uppercase
names = ['alice', 'bob', 'charlie']
uppercase_names = [name.upper() for name in names]
## Result: ['ALICE', 'BOB', 'CHARLIE']
2. Filtrage avec condition
## Filtering even numbers
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [num for num in numbers if num % 2 == 0]
## Result: [2, 4, 6, 8, 10]
## Nested conditions
result = [x*y for x in range(3) for y in range(3) if x!= y]
## Equivalent to nested loops with condition
Comparaison avec les méthodes traditionnelles
Méthode |
Lisibilité |
Performance |
Complexité |
Compréhension de liste |
Élevée |
Rapide |
Simple |
Boucle traditionnelle |
Moyenne |
Plus lente |
Plus verbeuse |
Fonction map() |
Faible |
Modérée |
Complexe |
Techniques avancées de compréhension
Compréhension de liste imbriquée
## Creating a 3x3 matrix
matrix = [[i*j for j in range(3)] for i in range(3)]
## Result: [[0, 0, 0], [0, 1, 2], [0, 2, 4]]
Expressions conditionnelles
## Ternary operation in comprehension
numbers = [1, 2, 3, 4, 5]
classified = ['even' if num % 2 == 0 else 'odd' for num in numbers]
## Result: ['odd', 'even', 'odd', 'even', 'odd']
Flux de travail de la compréhension de liste
graph TD
A[Input Iterable] --> B{Condition}
B -->|Pass| C[Apply Transformation]
B -->|Fail| D[Skip Item]
C --> E[Create New List]
## Benchmark: List Comprehension vs Traditional Loop
import timeit
## List comprehension
def comp_method():
return [x**2 for x in range(1000)]
## Traditional loop
def loop_method():
result = []
for x in range(1000):
result.append(x**2)
return result
Bonnes pratiques
- Utilisez la compréhension de liste pour les transformations simples.
- Évitez la logique complexe dans les compréhensions.
- Prioritisez la lisibilité.
- Considérez les expressions génératrices pour les grands ensembles de données.
Pièges courants
- Ne sacrifiez pas la lisibilité pour la brièveté.
- Soyez prudent avec les compréhensions imbriquées complexes.
- L'utilisation de mémoire peut être élevée pour les grandes listes.
Points clés
- Les compréhensions de liste offrent un moyen concis de créer des listes.
- Elles combinent l'itération, la transformation et le filtrage.
- Utiles pour les tâches de manipulation et de transformation de données.
LabEx recommande de pratiquer les compréhensions de liste pour écrire un code plus Pythonique.