Filtrage par un test



Nous avons vu au chapitre Tests (instruction if) que l'on pouvait exécuter un bloc d'instructions ou un autre suivant le résultat d'un test, comme un aiguillage.

Ici, si la condition suivant le if est vraie, l'élément correspondant sera inclus dans la liste finale, et sera exclu sinon. Notez que nous n'avons pas besoin de else.

[x for x in ma_liste if condition_sur_x] peut se lire «la liste des x quand x parcourt la liste ma_liste mais seulement les x pour lesquels la condition est vraie».


>>> liste = [1, 2, 3]

>>> [x for x in liste if x > 1]

[2, 3]

Les tests peuvent aussi être donnés sous la forme de Fonctions. En effet, si test est une fonction qui retourne un booléen (voir Compléments sur les booléens), alors on peut l'utiliser pour filtrer avec la syntaxe [x for x in ma_liste if test(x)].

[x for x in ma_liste if test(x)] peut se lire «la liste des x quand x parcourt la liste ma_liste, tels que test(x) est vrai».


>>> def pair(nbre):

...     return nbre % 2 == 0

...

>>> [x for x in range(0, 10) if pair(x)]

[0, 2, 4, 6, 8]

Créé avec HelpNDoc Personal Edition: Créez sans effort une documentation de haute qualité avec un outil de création d'aide