Nous mettrons à jour notre Politique de confidentialité prochainement. En voici un aperçu.

Python : Les structures de données

Appliquer des fonctions aux listes

Testez gratuitement nos 1344 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Il est temps pour vous d'utiliser la fonction map afin d'appliquer des fonctions à chaque membre d'une liste.
07:04

Transcription

Python a également quelques fonctions qui permettent une approche, justement fonctionnelle. On a des langages fonctionnels comme Lisp, Haskell, qui manipulent beaucoup de listes, justement. Et qu'est-ce qu'on fait souvent avec des listes ? Et bien, on doit faire une opération sur chaque élément de la liste. Souvent, c'est une fonction qui s'appelle map. Et puis, on doit parfois réduire la liste. C'est une opération qui s'appelle reduce. Et vous avez peut-être déjà entendu parler d'un algorythme de big data qui s'appelle justement map reduce et qui, est utilisé à partir de ces concepts fonctionnels pour par exemple, traiter des volumes importants de données sur un certain nombre de machines. Bon, ça c'est une parenthèse. L'idée de ces fonctions, c'est que dans un langage fonctionnel, vous avez manipulé des listes et vous appelez des fonctions qui ne modifient pas la liste elle-même mais qui retourne à un résultat. C'est purement l'approche fonctionnelle. On prend une fonction, on lui envoie des paramètres. La fonction a une valeur de retour et il n'y a aucun effet de bord dans la fonction. La fonction ne modifie jamais des variables globales. Bon, ça c'est une autre parenthèse. On a à peu près la même chose en Python, alors je vais vous montrer juste du traitement si vous avez envie de l'utiliser comme ça. Autrement, on va voir ensuite le concept de la compréhension de listes qui va nous permettre de faire la même chose dans une autre syntaxe peut-être maintenant, plus officielle, plus pythonienne que ne l'est cette approche fonctionnelle. Donc, comme je vous le disais, on va appeler des fonctions et on va retourner des valeurs. Donc, on va les attribuer non pas à départements mais à de nouvelles variables. Je vais faire une liste que je vais appeler liste 1 et par exemple, mes départements, si on se souvient, ne sont pas du tout en majuscules, enfin la première lettre en majuscule et puis, ensuite le reste est en minuscule. Que faire si je souhaite avoir ma liste et générer pour chaque élément de la liste, la même version en majuscules ? En fait, avoir une liste avec toutes mes chaînes en majuscules. Voilà, tout simplement. Et bien, je peux faire comme ça : utilisez cette fonction map qui comme je vous le disais, prend chaque élément de la liste et puis travaille dessus. Donc, je vais utiliser la fonction map et la fonction map prend deux paramètres. Le deuxième, je vais le mettre d'abord, c'est l'itérable sur lequel on va travailler. Et le premier, et bien, c'est la fonction. map permet d'appliquer une fonction à chaque élément de la liste. C'est-à-dire, au lieu de faire une boucle, je pourrais faire quelque chose comme ça : je pourrais dire for par exemple d pour départements, in départements et ensuite, je vais faire la même chose que j'ai fait ici, finalement. Et ajoutez dans une nouvelle liste. Donc ça, c'est une approche plutôt boucle, plutôt procédurale. Ici, je vais avoir une approche fonctionnelle, c'est-à-dire, je vais appliquer la fonction à l'aide de map à chaque élément de la liste. Donc, une fonction que je vais appliquer c'est soit une fonction que j'ai déjà créée. Il faut savoir qu'en Python finalement, toute fonction est un objet, il y a une adresse de la fonction. Donc, toute fonction est appelable finalement. On peut passer l'adresse de la fonction à l'intérieur de la fonction map mais je peux également faire une fonction anonyme, une fonction sur place, évidemment à l'aide d'un lambda. Donc, lambda, je vais dire, "pour chaque département et bien, tu me mets le département en majuscules." Comme ceci. On va voir si ça donne quelque chose, en faisant un print l1 bien entendu. Et ça me retourne à map object, à cette adresse. Ça c'est cool. Alors, qu'est-ce que je vais faire ? Je vais utiliser un cast, un transtypage spécifique, pour lui dire, "oui, cet objet, s'il te plaît, c'est une liste." Donc, on va lui dire ça comme ça. "Fais-moi une liste, s'il te plaît. Ou plutôt, prends-moi cet objet, et puis tu le transformes en liste pour que je comprenne bien que c'est une liste." Voilà qui est pas mal. Donc, mission accomplie. Deuxième fonction. Je vous ai parlé de l'idée de reduce. Alors, l'idée de reduce, on est en Python 3 ici, et on a un peu malheureusement du rouge. Parce qu'il se trouve que le créateur de Python qui s'appelle Guido van Rossum, déteste la fonction reduce parce que, il n'a pas tort, quand il la voit appliquée, il ne comprend absolument pas ce que les gens ont voulu faire. Parce que reduce va prendre en fait chaque élément de la liste et puis, l'appliquer petit à petit à l'élément suivant pour finalement retourner une seule valeur. Faire un calcul sur l'intégralité de la liste. Et ce que dit Guido van Rossum, c'est que c'est souvent totalement illisible ; Il vaut mieux faire une boucle ou utiliser de la compréhension de listes, comme on va le voir très bientôt. Donc reduce n'existe plus en Python 3. Si vous voulez absolument, vous pouvez faire une importation from functools. Donc, functools, ce sont des outils fonctionnels : vous pouvez faire un import de reduce et l'utiliser. Bon, on va s'en passer ici. Je vous le commente et laissons tomber reduce. Mais on a une autre fonction qui peut être parfois utile, c'est la fonction de filtre. Même chose, je vais faire un filter, ce que je vais obtenir, c'est une nouvelle liste mais bien sûr, filtrée. Je ne vais prendre que les éléments qui m'intéressent. Et pour le filtre, une fois de plus, je vais utiliser une expression lambda. Je vais dire, comment est-ce qu'on filtre, qu'est-ce qu'on va garder ? Et cette expression lambda va retourner bien sûr, une valeur, vrai ou faux. Vous allez voir. Par exemple, je veux garder mes départements. mais je veux garder - donc, je fais une expression lambda - seulement les départements qui commencent par la lettre a, h ou j par exemple. Donc, je fais ma lambda comme ceci. Je vous redis quand même, entre parenthèses qu'il y a des manières plus intéressantes de faire ça maintenant avec la compréhension de listes. Mais je vous montre juste le raisonnement. On va dire, - donc il nous faut la 1ère lettre en fait, de notre élément. Et donc, ma lambda prend ici, chaque élément. Donc, j'ai l'élément dans d. Je vais prendre, puisque je suis dans une chaîne de caractères, la première lettre. Et puis, je vais dire que cette première lettre doit être dans... et je me fais une liste de mes valeurs, j'ai dit a, h et j que voici. Et voilà. Et départements, on va regarder ce qu'on a dans l2. J'ai un objet filtre, même problème. Donc on transtype en liste explicitement et donc ça commence par a, par h par h et on a le Jura qui est ici. Donc, c'est plutôt pas mal. Donc voilà quelques fonctions spécifiques qui permettent une approche fonctionnelle du traitement des listes.

Python : Les structures de données

Maîtrisez les ressources du langage de programmation Python. Abordez en détail les structures de données natives telles que les listes, les tuples et les dictionnaires.

2h07 (23 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :30 août 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !