Compréhension de listes en Python (list comprehension)

Première générale Spé · Mathématiques Spé 1ère

À retenir

• [f(x) for x in sequence] applique f à chaque élément x de la séquence. • [f(x) for x in sequence if test(x)] ne garde que les éléments pour lesquels test(x) vaut True. • Une compréhension remplace le schéma « liste vide, boucle for, append » en une seule ligne.

Le cours

1. Syntaxe Une liste en compréhension crée une liste en une ligne, en appliquant une expression à chaque élément d'une séquence, éventuellement filtrée : [expression for x in sequence] ; [expression for x in sequence if condition]. Elle se lit comme l'écriture mathématique d'un ensemble : [x**2 for x in range(5)] correspond à \x^2 x \0, 1, 2, 3, 4\\ et donne [0, 1, 4, 9, 16]. 2. Équivalence avec une boucle Les deux constructions suivantes donnent la même liste [1, 8, 27, 64] : cubes = [k**3 for k in range(1, 5)] cubes = [] for k in range(1, 5): cubes.append(k**3) La compréhension remplace le schéma « liste vide, boucle for, append » ; le filtre if correspond à un if placé dans la boucle, autour du append. 3. Usages en mathématiques • Termes d'une suite explicite : [3 * n - 2 for n in range(6)] donne [-2, 1, 4, 7, 10, 13]. • Images par une fonction : [f(x) for x in valeurs]. • Filtrer une liste : [x for x in L if x > 0] garde les éléments strictement positifs. 4. Attention Une compréhension ne remplace qu'une boucle for : pour s'arrêter à un seuil inconnu à l'avance, il faut une boucle while avec append.

Dans ce chapitre