Bibliotheque itertools en Python : zip_longest, islice, groupby et Autres Fonctions

Maitrisez itertools en Python : zip_longest, islice, groupby, permutations, chain et count. Guide pratique avec exemples de code.

Mahmoud DEVO
Mahmoud DEVO
December 27, 2025 3 min read
Bibliotheque itertools en Python : zip_longest, islice, groupby et Autres Fonctions

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.

Advertisement

In-Article Ad

Dev Mode

Share this article

Mahmoud DEVO

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