Complément - niveau intermédiaire¶
Dans ce complément nous allons dire quelques mots du module itertools qui fournit sous forme d’itérateurs des utilitaires communs qui peuvent être très utiles. On vous rappelle que l’intérêt premier des itérateurs est de parcourir des données sans créer de structure de données temporaire, donc à coût mémoire faible et constant.
Le module itertools¶
À ce stade, j’espère que vous savez trouver la documentation du module que je vous invite à avoir sous la main.
import itertoolsComme vous le voyez dans la doc, les fonctionnalités de itertools tombent dans 3 catégories :
des itérateurs infinis, comme par exemple
cycle;des itérateurs pour énumérer les combinatoires usuelles en mathématiques, comme les permutations, les combinaisons, le produit cartésien, etc. ;
et enfin des itérateurs correspondants à des traits que nous avons déjà rencontrés, mais implémentés sous forme d’itérateurs.
À nouveau, toutes ces fonctionnalités sont offertes sous la forme d’itérateurs.
Pour détailler un tout petit peu cette dernière famille, signalons :
chainqui permet de concaténer plusieurs itérables sous la forme d’un itérateur :
for x in itertools.chain((1, 2), [3, 4]):
print(x)1
2
3
4
islicequi fournit un itérateur sur un slice d’un itérable. On peut le voir comme une généralisation derangequi parcourt n’importe quel itérable.
import string
support = string.ascii_lowercase
print(f'support={support}')support=abcdefghijklmnopqrstuvwxyz
# range
for x in range(3, 8):
print(x)3
4
5
6
7
# islice
for x in itertools.islice(support, 3, 8):
print(x)d
e
f
g
h