La fonction range en Python

Article publié le et mis à jour le .

Python for i in range

La fonction built-in range de Python est pratique lorsque vous devez effectuer une action un certain nombre de fois. En tant que pythoniste expérimenté, vous l’avez très probablement déjà utilisée. Mais que fait-elle au juste ?

En Python, la fonction native range() retourne une liste de nombres en prenant de 1 à 3 entiers : start, stop et step. Range est souvent utilisé dans les boucles for simples for i in range quand on veut itérer une action un certain nombre de fois.

Les 3 paramètres que la fonction range peut recevoir sont :

  • start - un entier qui détermine le premier élément dans la séquence de nombre qui va être retournée
  • stop - l’entier jusqu’auquel on va boucler mais sans l’inclure (comme on commence à compter à partir de 0)
  • step - un entier qui peut être positif ou négatif pour définir de combien on va incrémenter entre chaque élément de la liste

Comme on l’a vu dans cet autre article sur la boucle for en python, on a juste besoin d’un iterable pour boucler dessus. Et ça tombe bien, c’est ce que la fonction range nous renvoie !

💡 Vous voulez en apprendre plus sur les fonctions comme range() ? J’ai écrit un article qui reprend toutes les fonctions natives en Python.

Les Boucles for i in range en Python

Boucle for i in range avec 1 argument

En appelant range avec un seul paramètre, on lui donne un stop. Ainsi, range(3) nous renvoie : [0, 1, 2].

Dans une boucle for, cela donne :

for i in range(3):
    print(i)

Qui affichera à l’écran …

0
1
2

Boucle for i in range avec 2 arguments

En appelant range avec deux paramètres, on lui donne un start et un stop. Ainsi, range(2, 8) nous renvoie : [2, 3, 4, 5, 6, 7].

Dans une boucle for, cela donne :

for i in range(2, 8):
    print(i)

Qui affichera à l’écran …

2
3
4
5
6
7

Si le deuxième argument est plus petit que le premier, range renvoie une liste vide, on en rentrera donc pas dans la boucle.

print(list(range(4, 0)))

Donne [] sur la sortie standard.

Boucle for i in range avec 3 arguments

Et finalement en appelant range avec trois paramètres, on lui donne un start, un stop et un step. Ainsi, range(3, 10, 2) nous renvoie : [3, 5, 7, 9].

Mais on peut aussi s’amuser en donnant un step négatif, ce qui, dans une boucle for, donnerait :

for i in range(0, 42, 7):
    print(i)

Qui affichera à l’écran …

0
7
14
21
28
35

Et pour les petits malins qui veulent créer une boucle infinie avec range(42, 0, 7) par exemple, sachez que Python ne rentrera pas dans la boucle comme le start est plus grand que le stop (0) et que le step est positif.

Car oui, step ou les autres paramètres de la fonction range peuvent être des nombres négatifs 🤯

Itérer en arrière avec range en Python

On peut itérer en arrière avec range en Python en donnant un nombre négatif comme 3ème argument dans la fonction.

Par exemple, si on veut faire un compte à rebours de 10 à 1, on aura :

for i in range(10, 0, -1):
  print(i)

Regardons un peu de quoi est composé ce range :

  • 10 est le nombre avec lequel on commence, inclus
  • 0 est notre nombre de fin, non inclus
  • -1 est le saut qu’on va faire en partant de notre nombre de début jusqu’à notre nombre de fin (non-inclus)

Notre 3ème argument qu’on a appelé step ou saut dans cet article peut aussi être inférieur à -1. On peut donc aller de -7 en -7, de 42 à 0 (non-inclus):

for i in range(42, 0, -7):
  print(i)

Ce qui donnera, si vous avez suivi …

42
35
28
21
14
7

Indicer range en Python

Là on descend des les abysses de Python et vous ne devriez normalement jamais avoir besoin de faire quelque chose comme ça. Mais juste à titre informatif, vous devez savoir qu’on peut indicer et découper un objet range en Python.

En Python, la fonction range retourne un objet de type range. Comme un objet de type range est un itérable (comme une liste), on peut aussi l’indicer ou le découper.

Ainsi :

mon_objet_range = range(0, 4) # 0 1 2 3

indexation = mon_objet_range[2]

print(indexation) # 2

Dans cet exemple, la variable indexation vaudra 2 car mon_objet_range est similaire à une liste [0, 1, 2, 3] et l’élément en position 2 de cette liste est le nombre 2.

On peut aussi découper l’objet range :

mon_objet_range = range(0, 4) # 0 1 2 3

print(mon_objet_range[:2]) # 0 1
print(mon_objet_range[2:]) # 2 3
print(mon_objet_range[1:2:3]) # 1

Aller plus loin dans votre apprentissage de Python !

Python nous prouve une fois de plus être un langage robuste en étant souple et amusant. La fonction range n’a maintenant plus de secrets pour vous et vous avez également appris a maîtriser les boucles for en utilisant range !

Voici certains des articles les plus populaires en Python :

Les 10 meilleurs livres pour apprendre Python en 2024

Les meilleurs cours pour apprendre Python en 2024

Les expressions conditionnelles en Python

Comment utiliser les puissances en Python ?

Le Guide Ultime pour Apprendre Python en 2024

7 idées de projets en Python pour débutants

Les 7 meilleurs livres Django en 2024

Comment créer un Bot Telegram en Python ?

Comment créer un Bot Discord en Python ?

Comment créer un Bot Instagram gratuitement avec Python ?

Créer un Bot Twitter avec Python et AWS Lambda