Python et les listes

04/11/2004

S’il y a bien un concept sur lequel Python est éclatant, c’est bien le support natif des listes. Les listes, les fonctions lambda, filter et la forme associée au concept de liste “[expression for e in list]”. La méthode de collecte de données utilisée dans l’exemple utilise ces concepts, rendant le code plus concis et plus facile à comprendre. Voici un petit rappel pour clarifier les choses. Une fonction lambda est une fonction anonyme, qui associée à map ou filter (fonctions du langage Python) permet d’appliquer un traitement identique sur chaque élément d’une liste, et ce en une seule ligne. Par exemple, multiplier tous les éléments d’une liste d’entiers par 2 ou ne garder que les nombres pairs :

>>> liste=[1,2,3,4,5,6]
>>> map(lambda e: e*2, liste)
[2, 4, 6, 8, 10, 12]
>>> filter(lambda e: e % 2 ==0, liste)
[2, 4, 6]

L’inconvénient des fonctions lambda reste son écriture, qui rappelle les langages fonctionnels comme prolog ou caml. Cette écriture qui contraste fortement avec la programmation classique déroute souvent les programmeurs. Une autre forme peut alors être utilisée “[expression for e in liste]”. D’aucuns prétendent qu’elle est plus claire… Chacun se forgera une opinion.

>>> [e*2 for e in liste]
[2, 4, 6, 8, 10, 12]