Accéder au contenu principal

Tutoriel Python sur la fonction range()

Découvrez la fonction Python range() et ses possibilités à l'aide d'exemples.
Actualisé 16 janv. 2025  · 7 min de lecture

La fonction range() est une fonction très populaire et très utilisée en Python, en particulier lorsque vous travaillez avec des boucles for, et parfois aussi avec des boucles while. La fonction range() mérite d'être connue et maîtrisée, car elle vous ouvrira de nombreuses portes : range() est utilisée dans tous les domaines, depuis le contrôle du déroulement d'un programme jusqu'au bouclage d'ensembles de données que vous utilisez pour l'analyse de données. 

Si vous débutez en Python et souhaitez en savoir plus, suivez la formation Introduction à la science des données en Python de DataCamp.

Qu'est-ce que la fonction range() en Python ?

La fonction range() renvoie une séquence de nombres et est immuable, c'est-à-dire que sa valeur est fixe. La fonction range() prend un ou au maximum trois arguments, à savoir les valeurs start et stop ainsi que la taille step.

range() a été introduit dans Python3. Dans Python2, une fonction similaire, xrange(), a été utilisée, avec un comportement quelque peu différent. Entre autres, xrange() renvoie un objet générateur et consomme moins de mémoire, tandis que range() renvoie une liste ou une séquence de nombres.

L'utilité de la fonction range() tient en partie au fait qu'elle ne stocke que les valeurs start, stop et step, et qu'elle consomme donc moins de mémoire qu'une liste ou un tuple.

Syntaxe de la fonction Python range()

La fonction range() peut être représentée de trois manières différentes, ou vous pouvez les considérer comme trois paramètres range():

  • range(stop_value): Par défaut, le point de départ est zéro.
  • range(start_value, stop_value): La séquence est ainsi générée sur la base des valeurs de départ et d'arrêt.
  • range(start_value, stop_value, step_size): Il génère la séquence en incrémentant la valeur de départ à l'aide de la taille du pas jusqu'à ce qu'il atteigne la valeur d'arrêt.
Exemple de fonction range en Python
Fonction Python range(). Image par l'auteur. 

Nous pouvons également vérifier le type de la fonction range() en enveloppant range() dans type().

type(range(100))
range

Exemples de fonctions Python range()

Voyons maintenant quelques exemples afin que vous puissiez vous entraîner et maîtriser l'utilisation de range().

Utiliser Python range() pour imprimer une séquence de nombres

Commençons par un exemple simple d'impression d'une séquence de dix nombres, qui couvrira votre premier paramètre range(). Pour ce faire, il vous suffira de transmettre la valeur stop. Comme Python utilise l'indexation basée sur le zéro, la séquence commencera par zéro et s'arrêtera au nombre spécifié, c'est-à-dire $n-1$, où $n$ est le nombre spécifié dans la fonction range().

range(10) #it should return a lower and an upper bound value.
range(0, 10)
for seq in range(10):
    print(seq)
0
1
2
3
4
5
6
7
8
9

Comme prévu, la cellule ci-dessus renvoie une séquence de nombres commençant par $0$ et se terminant par $9$.

Utiliser Python range() avec list()

Vous pouvez également utiliser la fonction range en tant qu'argument d'une liste, auquel cas vous obtiendrez une liste de nombres dont la longueur est égale à la valeur d'arrêt, comme indiqué ci-dessous :

list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
len(list(range(10)))
10

Utilisation de start, stop et step dans Python range()

Voyons maintenant une autre façon de travailler avec la fonction range(). Vous indiquerez ici les valeurs start et stop.

range(5,10)
range(5, 10)
for seq in range(5,10):
    print(seq)
5
6
7
8
9

De même, vous pouvez utiliser la fonction range() pour imprimer les valeurs entières négatives.

for seq in range(-5,0):
    print(seq)
-5
-4
-3
-2
-1
list(range(10,20))
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

Ajoutons maintenant le troisième paramètre, c'est-à-dire la taille de step, à la fonction range() et voyons comment il affecte le résultat. Vous indiquerez que le point start est 50, que la valeur stop est 1000 et que la taille de step est 100. La fonction de plage ci-dessous doit produire une séquence commençant par 50 et s'incrémentant avec un pas de 100.

range(50,1000,100)

Vous remarquerez qu'il imprime tous les nombres pairs.

for seq in range(50,1000,100):
    print(seq)
50
150
250
350
450
550
650
750
850
950

Une note sur Python range() et les valeurs flottantes

Il est important de noter que la fonction range() ne peut fonctionner que si la valeur spécifiée est un entier ou un nombre entier. Il ne prend pas en charge le type de données float et le type de données string. Cependant, vous pouvez lui transmettre des valeurs entières positives et négatives. Voyons ce qui se passe lorsque vous essayez de transmettre des valeurs flottantes.

for seq in range(0.2,2.4):
    print(seq)
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-32-4d2f304928d0> in <module>
----> 1 for seq in range(0.2,2.4):
      2     print(seq)


TypeError: 'float' object cannot be interpreted as an integer

Vous vous êtes certainement gratté la tête au moins une fois en essayant d'inverser une liste chaînée de valeurs entières en langage C. Cependant, en Python, il est possible d'y parvenir avec la fonction range() en intervertissant simplement start et stop et en ajoutant une taille de pas négative. N'est-ce pas si simple ? Découvrons-le !

for seq in range(100,10,-10):
    print(seq)
100
90
80
70
60
50
40
30
20

Utiliser range() pour trouver la somme d'une liste

Supposons que vous ayez une liste de valeurs entières et que vous souhaitiez trouver la somme de la liste, mais en utilisant la fonction range(). Voyons si c'est possible.

Tout d'abord, vous définirez la liste composée de valeurs entières. Initialisez ensuite un compteur dans lequel vous stockerez la valeur à chaque fois que vous itérerez sur la liste et ajoutez également la valeur actuelle de la liste à l'ancienne valeur du compteur.

Pour accéder aux éléments de la liste, vous appliquerez la fonction range() à l'adresse length de la liste, puis vous accéderez aux éléments de la liste en contournant l'index i, qui commencera à zéro et s'arrêtera à la longueur de la liste.

list1 = [2,4,6,8,10,12,14,16,18,20]
count = 0

for i in range(len(list1)):
    count = count + list1[i]
    print(count)
print('sum of the list:', count)
2
6
12
20
30
42
56
72
90
110
sum of the list: 110

Utiliser range() avec itertools pour concaténer une liste

Vous pouvez également concaténer deux ou plusieurs fonctions range() en utilisant la classe du paquet itertools appelée chain. Et pas seulement la fonction range, vous pourriez même concaténer des listes, des tuples, etc. Rappelez-vous que la méthode chain renvoie un objet générateur et que pour accéder aux éléments de cet objet générateur, vous pouvez soit utiliser une boucle for, soit utiliser list et lui transmettre l'objet générateur en tant qu'argument.

from itertools import chain

a1 = range(10,0,-2)
a2 = range(30,20,-2)
a3 = range(50,40,-2)

final = chain(a1,a2,a3)

print(final) #generator object
<itertools.chain object at 0x107155490>
print(list(final))
[10, 8, 6, 4, 2, 30, 28, 26, 24, 22, 50, 48, 46, 44, 42]

Python range() et comparaisons d'égalité

Vous pouvez appliquer des comparaisons d'égalité entre les fonctions range(). Étant donné deux fonctions range(), si elles représentent la même séquence de valeurs, elles sont considérées comme égales. Cela dit, deux fonctions range() égales ne doivent pas nécessairement avoir les mêmes attributs start, stop et step. Comprenons-le à l'aide d'un exemple.

list(range(0, 10, 3))
[0, 3, 6, 9]
list(range(0, 11, 3))
[0, 3, 6, 9]
range(0, 10, 3) == range(0, 11, 3)
True
range(0, 10, 3) == range(0, 11, 2)
False

Comme vous pouvez le constater dans les résultats ci-dessus, même si les paramètres de la fonction range() sont différents, ils sont toujours considérés comme égaux puisque la séquence des deux fonctions est la même. Dans le deuxième exemple, la modification de la taille de step rend la comparaison False.

Conclusion

Félicitations pour avoir terminé le tutoriel. Vous voudrez peut-être bricoler un peu avec la fonction range() et trouver un moyen de la personnaliser pour qu'elle accepte d'autres types de données que les entiers.

Si, après votre lecture, vous pensez qu'il vous serait utile de vous exercer à l'utilisation des fonctions Python, consultez nos tutoriels Fonctions Python et Guide du débutant en Python pour les boucles. Pour un parcours d'apprentissage structuré, jetez un coup d'œil à notre cours DataCamp Writing Efficient Python Code, qui couvre non seulement la fonction range() en détail, mais vous aide également avec des concepts de codage plus généraux pour vous aider à écrire un code vraiment efficace sans beaucoup de surcharge. 

Sujets

En savoir plus sur Python

Certification disponible

cours

Écrire des fonctions en Python

4 hr
88.1K
Apprenez à utiliser les meilleures pratiques pour écrire des fonctions complexes, réutilisables et faciles à maintenir, avec une bonne documentation.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles. Il couvre tous les domaines, garantissant ainsi une stratégie de préparation bien équilibrée.
Zoumana Keita 's photo

Zoumana Keita

30 min

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

blog

Nous avons fait don de bourses DataCamp Premium à un million de personnes, et ce n'est pas fini.

Réparties entre nos deux programmes d'impact social, DataCamp Classrooms et #DCDonates, les bourses offrent un accès illimité à tout ce que DataCamp Premium a à offrir.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

Voir plusVoir plus