Python range pour un comptage et une indexation rapides

La fonction intégrée python range crée une séquence immuable d’entiers définie par début, fin et pas. Utilisez-la quand vous avez besoin de compteurs fiables ou de décalages d’index sans allouer une liste de tous les nombres. Elle montre comment début, fin et pas contrôlent les entiers produits par un range. Pour des schémas de boucle qui utilisent range, voir l’exemple de boucle for Python.

Exemple Python Range Pour Un Comptage Par Pas

Sortie :

La sortie apparaîtra ici...

Sortie :

stylo : 10 mm
agrafeuse : 30 mm

Comment Fonctionne Cet Exemple

  1. range(0, len(items), 2) parcourt les index de la liste avec un pas de 2.
  2. La valeur de fin est exclusive, donc elle n’atteint jamais len(items).
  3. Chaque index lit un élément et affiche une valeur liée à l’index (10, 30).

Pièges courants avec Python range

Erreur 1 : Penser que la valeur de fin est incluse.

for n in range(1, 5):
    print(n)
for n in range(1, 6):
    print(n)

Pourquoi ça arrive : range s’arrête avant la valeur de fin, donc les séquences inclusives nécessitent stop + 1.

Erreur 2 : Utiliser un pas positif en comptant à rebours.

for n in range(5, 0, 1):
    print(n)
for n in range(5, 0, -1):
    print(n)

Pourquoi ça arrive : un pas positif ne monte que vers le haut ; pour compter à rebours, le pas doit être négatif ou le range est vide.

Erreur 3 : Passer des non-entiers en début, fin ou pas.

for rate in range(0, 1, 0.1):
    print(rate)
for basis_points in range(0, 101, 5):
    rate = basis_points / 100
    print(rate)

Pourquoi ça arrive : les arguments de range doivent être des entiers (ou implémenter __index__), et le pas ne peut pas être zéro.

python range vs list(range) : lequel utiliser

Utilisez range quand…Utilisez list(range(...)) quand…
Vous avez seulement besoin d’itérer ou d’indexer par entiers.Vous devez stocker ou muter les nombres plus tard.
Vous voulez une mémoire constante pendant la boucle.Vous acceptez de payer une mémoire O(n) pour une liste concrète.
Vous avez besoin d’un objet séquence avec des mathématiques de début/fin/pas prévisibles.Vous avez besoin de méthodes de list comme append ou sort.

Règle de base : prenez range pour l’itération et les décalages ; matérialisez une liste seulement quand vous avez vraiment besoin de toutes les valeurs en mémoire. Quand vous avez besoin de paires index + valeur, préférez enumerate — voir l’exemple Python enumerate.

Considérations De Performance

range ne stocke que début, fin et pas, donc il utilise O(1) mémoire même pour des séquences énormes. Des tests d’appartenance comme n in range(...) sont en temps constant pour les entiers, ce qui est plus rapide que de parcourir une liste. Si vous appelez list(range(...)), vous payez une mémoire et un temps O(n) pour allouer chaque valeur, donc ne le faites que si vous avez besoin d’une vraie liste.

Plus de schémas avec Python range

Compter à rebours les tentatives avec un pas négatif.

for remaining in range(3, 0, -1):
    print(f"Nouvelle tentative dans {remaining}s")

Le pas négatif fait descendre la séquence, et la valeur d’arrêt reste exclusive. Cela garde un compte à rebours court et prévisible sans conditions supplémentaires.

Générer les heures de bureau sans stocker de liste.

for hour in range(9, 18):
    print(f"{hour}:00")

range(9, 18) produit 9 à 17, ce qui correspond à un horaire 9 à 17 avec une fin exclusive. C’est une façon propre de produire des créneaux fixes sans préconstruire les nombres.

Quand utiliser Python range

  • Utilisez-le pour des compteurs, des décalages ou des boucles à pas fixe où les données sont une séquence d’entiers.
  • Utilisez-le quand vous voulez une séquence efficace en mémoire plutôt qu’une liste préconstruite.
  • Évitez-le pour des pas non entiers ; mettez à l’échelle en entiers ou utilisez d’autres outils numériques.
  • Évitez list(range(...)) sauf si vous devez stocker ou muter les valeurs plus tard.