Adresses : http://docs.python.org/3.3/library/operator.html http://docs.python.org/3.3/library/functools.html
Le module operator offre une traduction fonctionnelle d’un grand nombre d’opérateurs. Par exemple, la fonction add est la traduction préfixée de l’opérateur d’addition. La liste des traductions opérateur → fonction est trop longue pour être reproduite ici. On se contentera donc de quelques exemples (d’autant qu’il est a priori possible de contourner l’utilisation de ce module en utilisant des listes en compréhension).
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
>>> from operator import * >>> list(map(add,[1,2,3],[40,50,60])) # on mappe l'addition sur deux listes [41, 52, 63] >>> [x+y for x,y in zip([1,2,3],[40,50,60])] # idem avec zip et liste en compréhension [41, 52, 63] >>> from random import sample # importe la fonction sample du module random >>> a = sample(range(100,1000),10); a # liste a de 10 entiers différents à trois chiffres [632, 138, 575, 233, 912, 985, 654, 245, 731, 589] >>> b = sample(range(100,1000),10); b # liste b de 10 entiers différents à trois chiffres [988, 770, 254, 505, 838, 809, 110, 999, 684, 431] >>> list(map(lt,a,b)) # mappe la fonction de comparaison < [True, True, False, True, False, False, False, True, False, False] >>> [x<y for x,y in zip(a,b)] # idem avec zip et liste en compréhension [True, True, False, True, False, False, False, True, False, False] |
Pour ce qui est du module functools, on retiendra essentiellement la fonction reduce :
reduce(f, s)reduce(f, s, d) |
calcule {v_1=s_1}, {v_2=f(v_1,s_2)}, etc., puis {v_{k+1}=f(v_k,s_{k+1})} et renvoie la dernière valeur. Avec d, même calcul mais en initialisant à {v_0=d}. |
|
1 2 3 4 5 6 7 8 |
>>> from operator import add # importe la fonction add du module operator >>> from functools import reduce # importe la fonction reduce du module functools >>> reduce(lambda x,y: 10*x+y, [7,3,4,8,6]) # conversion chiffres → base 10 73486 >>> reduce(add,[1,2,3,4,5]) # calcule la somme des éléments de la liste 15 >>> sum(x for x in [1,2,3,4,5]) # mais il y a plus simple (et sans module) 15 |
Retour à l’accueil du cours Python/Numpy
Sommaire du chapitre 7
- Le module random
- Le module decimal
- Le module fractions
- Le module string
- Le module itertools
- Les modules operator et functools
- Le module time
- La classe Counter du module collections
- La classe deque du module collections
- Le module heapq
- Le module bisect
- Le module copy
- Autres modules et adresses utiles