La magie des list comprehension

Publié par ark le ven 29 Oct 2010 à 02:51

Une list comprehension (compréhension de liste, création fonctionnelle de listes) permet de créer une liste à partir d'une liste existante,  tout en appliquant une fonction sur chaque élément de la liste, et tout ça en une ligne !

Pour la syntaxe : 

>>> [i for i in range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

Comme dit plus haut, on peut donc appliquer une fonction sur chaque élément :

>>> [i * 2 for i in range(10)]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

 

Pour ceux que ca intéresse, c'est dans la suite!

Mais elle permet aussi d'aller plus loin, en ajoutant une condition :

>>> [i * 2 for i in range(10) if i % 2]
[2, 6, 10, 14, 18]

c'est à dire que la fonction *2 a été appliquée que sur les nombres divisibles par 2.

 

On peut aussi se servir par exemple d'un dict pour créer sa nouvelle liste :

>>> [v for k, v in {0:"poah", 1:"tute", 2:"gruik"}.items()]
['poah', 'tute', 'gruik']

 

Bon au début ça fait mal à la tête mais on s'y fait et ça ouvre beaucoup de perspectives ! même si au final on ne fait rien de + qu'avec nos boucles..

Et pour ceux qui se demandent si on peut faire construire des dict de la même façon, c'est effectivement possible avec python3!

Python <3

blog comments powered by Disqus