Python : Les structures de données

S'initier à Itertools

Testez gratuitement nos 1300 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Découvrez maintenant le module Itertools qui comporte de nombreuses fonctions itérateur, mais également des fonctions générateur, tout cela pour résoudre des problèmes d'une manière fonctionnelle.
05:45

Transcription

Finalement, un module qui pourrait vous être utile pour votre travail avec des listes, avec des structures de données. C'est le module qui s'appelle Itertools. Je vous le montre ici dans la documentation. Il contient toute une série de fonctions qui ont une approche fonctionnelle du traitement des listes, du traitement des structures, des collections, si vous préférez. Et qui s'approche un peu de ce qu'on fait pour économiser des lignes de codes dans des langages fonctionnels. On ne le fait pas pour économiser des lignes de codes, c'est une vision un petit peu simpliste de la problématique, on le fait parce que, finalement, on a des besoins répétitifs d'itération, toujours faire les mêmes choses. Et pourquoi est-ce qu'on refait chaque fois les mêmes structures de boucle, alors qu'on pourrait une bonne fois pour toutes, nous générer des itérateurs qui répondent à nos besoins. C'est exactement ce que Itertools propose. Vous avez trois types d'itérateurs qui sont retournés, donc ça retourne des itérateurs. Quelque chose sur lequel je peux créer une itération avec un for par exemple. On a des itérateurs qui retournent quelque chose d'infini, si, si, absolument, infini. Comme par exemple un count, un cycle, ou un repeat. Et, ça peut être un certain nombre de fois pour le repeat, mais ça peut être totalement infini, je ne suis pas obligé de mettre le deuxième paramètre. Donc, ça génère un itérateur infini. Vous allez me dire : à quoi ça sert? Et bien parfois, à résoudre des problématiques dans l'itération même, à s'arrêter au bon moment, il faut évidemment s'arrêter quelque part. Mais vous pouvez, lorsque vous pensez à des problématiques, le travailler avec des itérateurs. Ca me fait penser à ce que j'ai l'habitude de faire quand je fais du code SQL, je fais pas mal de codes SQL, de penser sous forme d'ensemble, de travailler avec des ensembles au lieu de travailler dans un résonnement procédural. Les itérateurs infinis sont des itérateurs qui vont travailler sur une séquence, comme "chain", "chain from iterable", "compress". On va avoir quelques exemples. Et puis, des générateurs, donc c'est des formes d'itérateurs qui sont combinatoires qui vont prendre par exemple le produit cartésien de collection, ce qui équivaudrait à faire une boucle dans une boucle. Mais autant ne pas le faire puisqu'on a un itérateur ici, qui s'appelle "product" et qui le fait pour nous. Alors ces itérateurs, vous pouvez les utiliser soit dans une boucle, ce qui est souvent le cas. Soit directement, en le récupérant dans un résultat sous forme de structure, un itérateur va pouvoir être casté en tuple, ou en liste évidemment. Je vous montre quelques exemples, Il faut d'abord que j'importe bien entendu, Itertools. Un exemple très simple ici, j'ai mes codes et mes départements, et puis je voudrais faire un seul tuple avec ça. Je ne sais pas pourquoi, mais un seul tuple. Je pourrai très bien faire, codes + départements, là c'est vrai, absolument, et donc j'ai déjà ça, mais je peux aussi chaîner, c'est à dire utiliser Itertools, "chain", et puis passer en paramètres, mes deux collections, j'ai une chaîne, je vais la transformer en tuple. D'ailleurs, on est toujours en Python 3. Vous allez me dire: "impressionnant, on a fait la même chose." mais alors il a quelque chose de très rigolo avec Itertools chain, c'est "from iterables". Si par exemple, maintenant je vais prendre les départements. Je voudrais compter le nombre de lettres de tous les départements, faire la somme de ces lettres. Je pourrai très bien effectivement utiliser une compréhension de liste, récupérer la longueur de chaque chaîne dans une liste, et ensuite faire la somme. Mais je peux récupérer également ici, grâce à "itertools chain from iterable", un itérable qui est composé de toutes les lettres les unes après les autres, en fait ce qu'on a fait c'est qu'on a pris l'itérable, et puis on a créé une chaîne à partir de cet itérable, qui devient un itérable de toutes les lettres qu'on trouve. Et puis maintenant, je peux les utiliser par exemple pour faire un "count", vous vous souvenez de la collection "count", pour compter le nombre de fois où on trouve un "A" par exemple. Bref, je vais pouvoir travailler maintenant avec cet itérable, mais je peux très bien faire, bien entendu ici, une longueur maintenant pour savoir combien j'ai de caractères. J'ai en 907 il se trouve que. Ça peut être un moyen assez rapide en une ligne, de compter le nombre de caractères dans toute une liste, ou tout un tuple. Autre exemple, un peu artificiel peut être mais, je voudrais avoir maintenant mes codes, et puis faire un total cumulé. Alors c'est bête parce que mes codes sont des chaînes de caractères. Mais je vais quand même travailler avec un total cumulé. Avec Itertools, il y une fonction qui s'appelle simplement "accumulate, et qui va me générer un total cumulé. Si c'est des entiers ou des nombres, ça va être un peu plus pratique, nous sommes d'accord, mais c'est juste pour vous montrer le résultat. Donc je récupère ici mon total cumulé, j'en fais un tuple, et puis, on regarde le résultat. Donc "01", "0102", "010203", vous avez compris. L'accumulation s'est faite ici par concaténation bien sûr. Donc on a, ce qu'on appelle en anglais une "running sum", un total cumulé, un montant, ou un somme cumulée.

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 !