0Pricing
Python Academy · Leçon

itertools : itérateurs infinis et finis

Utilisez count, cycle, islice, chain et zip_longest.

itertools : itérateurs infinis et finis est une leçon Python Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Python Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Python Academy comprend 4 leçons au total.

Qu’est-ce que itertools ?

itertools est un module de la bibliothèque standard qui fournit des briques de construction d’itérateurs économes en mémoire. Toutes ses fonctions renvoient des itérateurs, et non des listes.

import itertools

# count: infinite counter
for i in itertools.islice(itertools.count(10, 2), 5):
    print(i, end=" ")  # 10 12 14 16 18

count()

count(start, step) produit une suite arithmétique infinie. Associez-le toujours à islice ou à une condition d’arrêt.

import itertools

for n in itertools.count(1, 10):
    if n > 40:
        break
    print(n, end=" ")  # 1 11 21 31 41

cycle()

cycle(iterable) répète l’itérable à l’infini.

import itertools

colors = itertools.cycle(["red","green","blue"])
for _ in range(7):
    print(next(colors), end=" ")
# red green blue red green blue red

repeat()

repeat(value, times) renvoie la même valeur times fois, ou indéfiniment si cet argument est omis.

import itertools
print(list(itertools.repeat(42, 4)))   # [42, 42, 42, 42]
print(list(map(pow, range(5), itertools.repeat(2))))
# [0, 1, 4, 9, 16]

islice()

islice(it, stop) ou islice(it, start, stop, step) extrait une portion d’un itérateur sans le matérialiser.

import itertools

result = list(itertools.islice(range(100), 2, 10, 2))
print(result)  # [2, 4, 6, 8]

chain()

chain(*iterables) enchaîne plusieurs itérables bout à bout pour former un seul itérateur.

import itertools

result = list(itertools.chain([1,2], [3,4], [5]))
print(result)  # [1, 2, 3, 4, 5]

# chain.from_iterable for a list of iterables:
nested = [[1,2],[3,4]]
print(list(itertools.chain.from_iterable(nested)))

zip_longest()

zip_longest associe des itérables de longueurs différentes en remplissant les valeurs manquantes avec une valeur fillvalue.

import itertools

a = [1, 2, 3]
b = ["a", "b"]
print(list(itertools.zip_longest(a, b, fillvalue=0)))
# [(1, "a"), (2, "b"), (3, 0)]

dropwhile() et takewhile()

takewhile(pred, it) renvoie les éléments tant que le prédicat est vrai. dropwhile fait l’inverse.

import itertools

nums = [1, 3, 5, 6, 7, 9]
print(list(itertools.takewhile(lambda x: x % 2, nums)))
# [1, 3, 5]

print(list(itertools.dropwhile(lambda x: x % 2, nums)))
# [6, 7, 9]

filterfalse()

filterfalse(pred, it) renvoie les éléments pour lesquels le prédicat est False — le complément de filter().

import itertools

evens = list(itertools.filterfalse(lambda x: x%2, range(10)))
print(evens)  # [0, 2, 4, 6, 8]

starmap()

starmap(func, iterable) applique une fonction à chaque tuple d’arguments fourni par un itérable.

import itertools, operator

pairs = [(2,3),(4,5),(1,10)]
result = list(itertools.starmap(operator.mul, pairs))
print(result)  # [6, 20, 10]

groupby()

groupby(it, key) regroupe les éléments consécutifs ayant la même valeur de clé. Triez d’abord l’itérable pour obtenir des groupes corrects.

import itertools

data = sorted([("a",1),("b",2),("a",3)], key=lambda x:x[0])
for key, group in itertools.groupby(data, key=lambda x:x[0]):
    print(key, list(group))

Vérification rapide

Que produit itertools.chain([1,2], [3,4]) ?

Récapitulatif

itertools fournit des itérateurs infinis (count, cycle, repeat), l’extraction de portions (islice), la combinaison (chain, zip_longest) et le filtrage (takewhile, dropwhile, filterfalse). Tous sont paresseux et économes en mémoire.

Questions Fréquemment Posées

La leçon « itertools : itérateurs infinis et finis » est-elle gratuite ?

Oui — le texte complet de « itertools : itérateurs infinis et finis » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Python Academy, passe à CoddyKit PRO. Le cours Python Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « itertools : itérateurs infinis et finis » ?

Utilisez count, cycle, islice, chain et zip_longest. Tu pratiques Python Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Python Academy ?

Aucune expérience préalable n'est requise. Python Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « itertools : itérateurs infinis et finis » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Python Academy ?

Oui. Chaque leçon Python Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. itertools : itérateurs infinis et finis
  2. itertools : combinatoire
  3. functools : partial et reduce
  4. functools : lru_cache et cached_property
← Retour à Python Academy