Cours
La fonction range() est une fonction très populaire et largement utilisée en Python, en particulier lorsque vous travaillez avec des boucles for et parfois également avec des boucles while. Il est important de connaître et de maîtriser la fonction range(), car cela vous ouvrira de nombreuses possibilités : range() est utilisée dans divers contextes, du contrôle du déroulement d'un programme à la boucle sur des ensembles de données que vous utilisez pour l'analyse de données.
Si vous débutez avec Python et souhaitez approfondir vos connaissances, nous vous recommandons de suivre le cours Introduction à la science des données avec Python proposé par DataCamp.
Quelle est la fonction range() en Python ?
La fonction range() renvoie une séquence de nombres et est immuable, ce qui signifie que sa valeur est fixe. La fonction range() accepte un ou trois arguments au maximum, à savoir start, une valeur stop et une taille step.
range() a été introduit dans Python3. Dans Python2, une fonction similaire, xrange(), était utilisée, mais son comportement était 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() réside en partie dans le fait qu'elle ne stocke que les valeurs start, stop et step, ce qui lui permet de consommer moins de mémoire qu'une liste ou un tuple.
Syntaxe de la fonction range() en Python
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 ici zéro.
range(start_value, stop_value): Ceci génère la séquence en fonction des valeurs de début et de fin.
range(start_value, stop_value, step_size): Il génère la séquence en augmentant la valeur de départ à l'aide de la taille du pas jusqu'à ce qu'elle atteigne la valeur d'arrêt.

Nous pouvons également vérifier le type de la fonction range() en encapsulant range() dans type().
my_range = range(100)
print(type(my_range))
# Expected output: <class 'range'>
Exemples d'utilisation de la fonction range() en Python
Examinons maintenant quelques exemples afin que vous puissiez vous exercer et maîtriser l'utilisation de range().
Utilisation de la fonction range() de Python pour afficher une séquence de nombres
Commençons par un exemple simple consistant à imprimer une séquence de dix nombres, qui couvrira votre premier paramètre range(). Pour ce faire, il vous suffira de transmettre la valeur stop. Étant donné que Python fonctionne avec un indexage basé sur 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().
my_range = range(10)
for num in my_range:
print(num)
# Expected output:
# 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.
Utilisation de range() avec list() de Python
Vous pouvez également utiliser la fonction range comme argument d'une liste, ce qui donnerait une liste de nombres dont la longueur est égale à la valeur d'arrêt, comme illustré ci-dessous :
my_range = list(range(10))
print(my_range)
range_length = len(my_range)
print(range_length)
# Expected output:
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 10
Utilisation des fonctions start, stop et step dans Python range()
Ensuite, examinons une autre méthode pour utiliser la fonction range(). Veuillez indiquer ici les valeurs start et stop.
my_range = range(5, 10)
print(my_range)
# Expected output: range(5, 10)
for num in range(5,10):
print(num)
# Expected output:
# 5
# 6
# 7
# 8
# 9
De même, vous pouvez utiliser la fonction range() pour imprimer également les valeurs entières négatives.
for num in range(-5,0):
print(num)
# Expected output:
# -5
# -4
# -3
# -2
# -1
Ajoutons maintenant le troisième paramètre, c'est-à-dire la taille step, à la fonction range(), et observons comment cela affecte le résultat. Veuillez définir le point start à 50, la valeur stop à 1000 et la taille step à 100. La fonction range ci-dessous devrait générer une séquence commençant à 50 et augmentant par incréments de 100.
my_range = range(50,1000,100)
print(my_range)
# Expected output: range(50, 1000, 100)
Vous remarquerez qu'il affichera tous les nombres pairs.
for num in range(50,1000,100):
print(num)
# Expected output:
# 50
# 150
# 250
# 350
# 450
# 550
# 650
# 750
# 850
# 950
Remarque sur la fonction range() et les valeurs flottantes en Python
Il est important de noter que la fonction range() ne peut fonctionner que lorsque la valeur spécifiée est un nombre entier ou un nombre entier. Il ne prend pas en charge les types de données flottants et les types de données chaînes. Cependant, vous pouvez lui transmettre à la fois des valeurs entières positives et négatives. Observons ce qui se produit lorsque vous essayez de transmettre des valeurs flottantes.
for num in range(0.2,2.4):
print(num)
# Expected output:
# TypeError: 'float' object cannot be interpreted as an integer
Vous vous êtes certainement posé la question au moins une fois en essayant d'inverser une liste chaînée de valeurs entières en langage C. Cependant, en Python, cela peut être réalisé à l'aide de la fonction range() en échangeant simplement les paramètres start et stop et en ajoutant une valeur négative à la taille du pas. N'est-ce pas simple ? Découvrons-le.
for num in range(100,10,-10):
print(num)
# Expected output:
# 100
# 90
# 80
# 70
# 60
# 50
# 40
# 30
# 20
Utilisation de range() pour calculer la somme d'une liste
Supposons que vous disposiez d'une liste de valeurs entières et que vous souhaitiez calculer la somme de cette liste en utilisant la fonction range(). Vérifions si cela est réalisable.
Tout d'abord, vous définirez la liste composée de valeurs entières. Veuillez initialiser un compteur dans lequel vous enregistrerez la valeur à chaque itération de la liste et ajouterez également la valeur actuelle de la liste à l'ancienne valeur du compteur.
Pour accéder aux éléments de la liste, veuillez appliquer la fonction range() ion à length de la liste, puis accéder aux éléments de la liste en utilisant l'i d'indexation, qui commence à zéro et s'arrête à 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)
# Expected output:
# 2
# 6
# 12
# 20
# 30
# 42
# 56
# 72
# 90
# 110
# sum of the list: 110
Utilisation de range() avec itertools pour concaténer une liste
Vous pouvez également concaténer deux ou plusieurs fonctions range() s à l'aide de la classe du package itertools appelée chain. Et pas seulement la fonction range, vous pouvez également concaténer des listes, des tuples, etc. Veuillez noter que la méthode chain renvoie un objet générateur. Pour accéder aux éléments de cet objet générateur, vous pouvez soit utiliser une boucle for, soit utiliser list et lui passer l'objet générateur en 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
# Expected output: <itertools.chain object at 0xae6330>
print(list(final))
# Expected output:
# [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(). Si deux fonctions range() représentent la même séquence de valeurs, elles sont alors considérées comme égales. Cela dit, deux fonctions range() équivalentes n'ont pas besoin d'avoir les mêmes attributs start, stop et step. Comprenons cela à l'aide d'un exemple.
# range(0, 10, 3) = [0, 3, 6, 9]
# range(0, 11, 3) = [0, 3, 6, 9]
print(range(0, 10, 3) == range(0, 11, 3))
# Expected output: True
# range(0, 10, 3) = [0, 3, 6, 9]
# range(0, 11, 2) = [0, 2, 4, 6, 8, 10]
print(range(0, 10, 3) == range(0, 11, 2))
# Expected output: False
Comme vous pouvez le constater à partir des résultats ci-dessus, même si les paramètres de la fonction range() ion sont différents, ils sont toujours considérés comme égaux, car la séquence des deux fonctions est identique. Dans le deuxième exemple, la modification de la taille step rend la comparaison False.
Conclusion
Félicitations pour avoir terminé le tutoriel. Il serait peut-être utile d'explorer la fonction range() et de trouver un moyen de la personnaliser afin qu'elle accepte d'autres types de données que les entiers.
Si, après avoir lu cet article, vous estimez qu'il pourrait être utile de vous exercer à utiliser les fonctions Python, nous vous invitons à consulter nos tutoriels Python Fonctions et Guide Python pour débutants : boucles. Pour un parcours d'apprentissage structuré, nous vous invitons à consulter notre cours DataCamp intitulé Writing Efficient Python Code (Écrire du code Python efficace), qui non seulement traite en détail de la fonction range(), mais aborde également des concepts de codage plus généraux afin de vous aider à écrire du code vraiment efficace sans trop de surcharge.
