Aller au contenu
Structures

zip & enumerate

enumerate numérote les éléments d'une séquence et zip parcourt plusieurs séquences en parallèle. Ils remplacent les boucles sur range(len(...)), plus longues et plus fragiles.

  • zip
  • enumerate
  • parallèle
  • index
  • pairwise
  • strict

Syntaxe

Modèle
for i, x in enumerate(sequence, start=1): ...for a, b in zip(seq1, seq2, strict=True): ...dict(zip(cles, valeurs))

Exemple

Exemple concret
eleves = ["Ana", "Bob", "Chloé"]notes = [14, 8, 17]for rang, (nom, note) in enumerate(zip(eleves, notes), start=1):    print(f"{rang}. {nom} : {note}")# → 1. Ana : 14# → 2. Bob : 8# → 3. Chloé : 17carnet = dict(zip(eleves, notes))print(carnet)                # → {'Ana': 14, 'Bob': 8, 'Chloé': 17}ca_mensuel = [100, 130, 120, 150]evolutions = [apres - avant for avant, apres in zip(ca_mensuel, ca_mensuel[1:])]print(evolutions)            # → [30, -10, 30]

À retenir

  1. enumerate(seq, start=1) commence la numérotation à 1, pratique pour un classement ou un numéro de ligne de fichier.
  2. dict(zip(cles, valeurs)) assemble un dictionnaire à partir de deux listes alignées.
  3. zip(l, l[1:]) forme les paires (valeur, valeur suivante) pour calculer des écarts d'une période à l'autre ; itertools.pairwise(l) fait de même sans copier la liste.
  4. Piège : zip s'arrête sans prévenir sur la séquence la plus courte, si bien qu'une donnée manquante passe inaperçue. Avec strict=True (3.10+), il lève une erreur si les longueurs diffèrent.
  5. zip(*lignes) transpose une liste de lignes en colonnes.

Voir aussi