les generator expressions
Les generators expressions sont au python ce que le ménage est à la femme.
On va voir 2 façons d'utiliser les generator expressions .
La première façon de les utiliser est exactement la même que pour les list compréhensions ( jetez-y un oeil si vous ne savez pas ce que c'est ).
Voilà à quoi cela ressemble :
monOpération( monExpression for maVariable in monObjet ) -> monResultat
Ça va donc nous permettre de générer un résultat, en effectuant monOpération sur l'ensemble des itérations de monObjet (et non à chaque itération) .
Et, à chaque itération, maVariable rentre dans monExpression .
Puisque c'est pas très clair pour vous, un bon exemple pour illustrer ceci :
#-*- coding:Utf-8 -*-
print sum( i*i for i in range(11) )
Et donc cette ligne va faire une somme de tous les i² :
sum( ( 0,1,4,9,16,25,36,49,64,81 ) )
Voilà , je rentrerai pas plus en détail dans cette 1° partie, mon article sur les list compréhensions l'ait suffisamment .
On peut donc utiliser les generator expression autrement : comme son nom l'indique, on peut utiliser un generator expression en tant que generator (cf l'article dessus ) .
Cela nous évite alors de créer une fonction afin d'avoir notre generator .
De ce fait, tout pourra tenir sur une ligne et devenir incompréhensible, vous pourrez alors faire vos kékés : "ah t'arrives pas à comprendre ça, pov quiche lorraine " .
Voici la syntaxe :
( monExpression for maVariable in monObjet ) -> generator
Cela va nous renvoyer un generator ; et à chaque appel de next(), on va donc itérer monObjet et effectuer alors sur maVariable actuelle monExpression .
Et comme là aussi, vous n'avez rien compris ( je vous rassure moi non plus ) , un exemple :
#-*- coding:Utf-8 -*-
generator = ( i*i for i in range(11) )
for i in generator :
print i
#ou
#for i in ( i*i for i in range(11) ) :
# print i
Voilà, donc on crée notre generator .
A chaque appel de next(), on va itérer monObjet (qui est une liste contenant les nombres de 0 à 10 ) renvoyant i*i .
J'ai mis la seconde méthode, plus compacte, en commentaires puisqu'elle est peut-être moins compréhensible aux premiers abords .
C'est terminé pour cette courte intro aux generator expressions