La fonction range en Python
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éestop
- 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 ?
Je m'appelle Thomas, et je code depuis plus de 20 ans. Depuis ma sortie de la première promotion de l'École 42, j'ai conçu et développé des centaines d'applications et de sites web. Sur ce blog, je partage avec vous les stratégies les plus efficaces pour maîtriser l'art de coder et progresser rapidement.