Table of Contents
Utiliser les Fonctions de la Bibliothèque itertool pour Gérer les Iterables en Python
Introduction
Les bibliothèques fournies avec Python sont souvent sous-estimées. Une d’elles est particulièrement utile : itertools. Elle vous permettra de gérer les iterables et les générateurs, qui sont des concepts fondamentaux pour tout développeur Python.
Dans cet article, nous allons voir comment utiliser certaines des fonctions clés de la bibliothèque itertools pour traiter efficacement vos données. Nous aborderons également quelques cas d’utilisation courants et les pièges à éviter.
53.1: Utiliser zip_longest
La fonction zip_longest permet de combiner deux iterables en un seul, même si l’un d’eux est plus court que l’autre. Elle accepte un argument facultatif fillvalue qui permet de remplacer les valeurs manquantes.
import itertools
a = [i for i in range(5)] # Longueur : 5
b = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] # Longueur : 7
for i in itertools.zip_longest(a, b):
x, y = i # zip_longest retourne les valeurs sous la forme d'un tuple
print(x, y)
53.2: Prendre une Slicage d’un Générateur avec islice
La fonction islice permet de prendre une portion d’un générateur.
import itertools
def gen():
n = 0
while n < 20:
n += 1
yield n
results = fetch_paged_results() # retourne un générateur
limit = 20 # Nous voulons seulement les premiers 20 résultats
for data in itertools.islice(results, limit):
print(data)
53.3: Grouper des éléments d’un itérable avec groupby
La fonction groupby permet de grouper les éléments d’un itérable.
import itertools
lst = [("a", 5, 6), ("b", 2, 4), ("a", 2, 5), ("c", 2, 6)]
def testGroupBy(lst):
groups = itertools.groupby(lst, key=lambda x: x[1])
for key, group in groups:
print(key, list(group))
testGroupBy(lst)
53.4: Utiliser takewhile
La fonction takewhile permet de prendre les éléments d’un itérable tant qu’une condition est vraie.
import itertools
def is_even(x):
return x % 2 == 0
lst = [0, 2, 4, 12, 18, 13, 14, 22, 23, 44]
result = list(itertools.takewhile(is_even, lst))
print(result)
53.5: Utiliser permutations
La fonction permutations permet de prendre les permutations d’un itérable.
import itertools
a = [1,2,3]
print(list(itertools.permutations(a)))
print(list(itertools.permutations(a, 2)))
53.6: Répéter un élément avec repeat
La fonction repeat permet de répéter un élément.
import itertools
for i in itertools.repeat('over-and-over', 3):
print(i)
53.7: Utiliser accumulate
La fonction accumulate permet d’accumuler des nombres dans un itérable.
import itertools as it
import operator
print(list(it.accumulate([1,2,3,4,5])))
print(list(it.accumulate([1,2,3,4,5], func=operator.mul)))
53.8: Utiliser cycle
La fonction cycle permet de créer un itérateur infini.
import itertools as it
for i in it.cycle('ABCD'):
print(i)
53.9: Utiliser product
La fonction product permet d’itérer sur les produits cartésiens d’un ensemble de listes.
import itertools as it
a = [1,2,3]
b = ['a','b','c']
for i in it.product(a,b):
print(i)
53.10: Utiliser count
La fonction count permet de créer un itérateur infini qui compte.
import itertools as it
for i in it.count():
if i > 20:
break
print(i)
# La fonction count accepte deux arguments : start et step.
for i in it.count(start=10, step=4):
if i > 20:
break
print(i)
53.11: Chainer des Itérateurs avec chain
La fonction chain permet de créer un seul itérateur qui itère sur plusieurs générateurs.
from itertools import chain
a = (x for x in ['1', '2'])
b = (x for x in ['3', '4'])
for i in chain(a, b):
print(i)
Conclusion
La bibliothèque itertools offre de nombreuses fonctions pour gérer efficacement les iterables et les générateurs en Python. Nous avons vu dans cet article comment utiliser certaines de ces fonctions clés, comme zip_longest, islice, groupby, takewhile, permutations, repeat, accumulate, cycle, product et count. Nous avons également souligné les pièges à éviter pour une utilisation optimale de ces fonctions.
Pour aller plus loin, je vous recommande d’explorer la documentation officielle de Python et les ressources en ligne pour apprendre davantage sur les itérables, les générateurs et les différentes fonctionnalités de la bibliothèque itertools.
In-Article Ad
Dev Mode
Mahmoud DEVO
Senior Full-Stack Developer
I'm a passionate full-stack developer with 10+ years of experience building scalable web applications. I write about Vue.js, Node.js, PostgreSQL, and modern DevOps practices.
Enjoyed this article?
Subscribe to get more tech content delivered to your inbox.
Related Articles
Recherche de valeurs dans les listes, tuples et dictionnaires Python
Apprenez a rechercher des elements dans les sequences Python : methode index(), mot-cle in, recherche dans les dictionnaires et algorithme bisect pour listes triees.
Expressions Regulieres en Python : Guide Complet pour Maitriser le Module re
Apprenez a maitriser les expressions regulieres en Python avec le module re. Decouvrez comment extraire des donnees, valider des formats, manipuler des chaines et eviter les pieges courants avec des exemples pratiques.
Gestion des packages Python : creer et utiliser requirements.txt efficacement
Guide complet pour gerer vos dependances Python avec pip. Apprenez a creer un fichier requirements.txt, utiliser les environnements virtuels et maitriser la gestion des packages pour des projets Python professionnels et reproductibles.