Python Fonction range() : Float, List, Exemples de boucles For

Qu’est ce qu' Python Varier?

Python range() est une fonction intégrée disponible avec Python de Python(3.x), et il donne une séquence de nombres basée sur l'index de début et d'arrêt donné. Si l'index de début n'est pas donné, l'index est considéré comme 0, et il incrémentera la valeur de 1 jusqu'à l'index d'arrêt.

Par exemple, range(5) vous affichera les valeurs 0,1,2,3,4. Python range() est une commande très utile et principalement utilisée lorsque vous devez itérer en utilisant la boucle for.

Syntaxe

range(start, stop, step)

Paramètres

  • Démarrer: (facultatif) L'index de départ est un entier, et s'il n'est pas indiqué, la valeur par défaut est 0.
  • arrêter L'index d'arrêt décide de la valeur à laquelle la fonction de plage doit s'arrêter. C'est une entrée obligatoire pour la fonction de plage. La dernière valeur sera toujours inférieure de 1 à la valeur d'arrêt.
  • étape: (facultatif). La valeur de pas est le nombre par lequel le nombre suivant dans la plage doit être incrémenté, par défaut, il est 1.

Valeur de retour

La valeur de retour est une séquence de nombres allant de l'index de début à l'index d'arrêt donné.

Python range() Fonction et historique

Python range() a été introduit à partir de la version 3 de Python, avant cela xrange() était la fonction.

range et xrange() sont utilisés pour produire une séquence de nombres.

Voici la différence entre range et xrange() :

intervalle() plagex()
Le range() donne la séquence de nombres et renvoie une liste de nombres. La fonction xrange() donne un objet générateur qui doit être bouclé dans une boucle for pour obtenir les valeurs.
Le range() renvoie une liste. xrange() renvoie un objet générateur.
La méthode range() utilise plus de mémoire car la liste renvoyée doit être stockée par rapport à xrange(). Comme xrange() renvoie un objet générateur, il ne donne pas de valeurs instantanément et doit être utilisé dans la boucle for pour obtenir les valeurs.
L'utilisation de la mémoire est plus importante, d'où l'exécution du code est lente lorsque l'on travaille sur un énorme ensemble de données. L'exécution du code est plus rapide en utilisant xrange().

Utilisation de la plage()

Cet exemple montre comment imprimer les valeurs de 0 à 9 en utilisant range().

La valeur utilisée dans la plage est 10, donc la sortie est 0 1 2 3 4 5 6 7 8 9

Puisque le début n'est pas donné, le début est considéré comme 0 et la dernière valeur est donnée jusqu'à 9. La dernière valeur est toujours inférieure de 1 à la valeur donnée, c'est-à-dire stop-1.

for i in range(10):
    print(i, end =" ")

Sortie :

0 1 2 3 4 5 6 7 8 9

Utilisation du démarrage et de l'arrêt dans la plage()

Dans le code, la valeur de départ est 3 et la valeur d'arrêt est 10. Ici, l'index de départ est 3, donc la séquence de nombres commencera de 3 jusqu'à la valeur d'arrêt. La dernière valeur de la séquence sera inférieure de 1 à la valeur d'arrêt 10-1 = 9.

for i in range(3, 10):
    print(i, end =" ")

Sortie :

3 4 5 6 7 8 9

Utiliser start, stop et step

La valeur de départ est 3, donc la séquence de nombres commencera à 3. La valeur d'arrêt est 10, donc la séquence de nombres s'arrêtera à (10-1), soit 9. Le pas est de 2, donc chaque valeur de la séquence sera être incrémenté de 2. Si la valeur du pas n’est pas donnée, la valeur du pas est par défaut de 1.

for i in range(3, 10, 2):
    print(i, end =" ")

Sortie :

3 5 7 9

Jusqu'à présent, nous avons vu comment la fonction range() donne la valeur incrémentée pour la valeur d'arrêt donnée. Essayons maintenant un exemple pour obtenir la valeur décrémentée dans la plage donnée.

Incrémentation des valeurs dans la plage en utilisant un pas positif.

Le paramètre step dans range() peut être utilisé pour incrémenter/décrémenter les valeurs. Par défaut, c'est une valeur positive 1. Cela donnera donc toujours des valeurs incrémentées.

La valeur du pas doit être positive au cas où vous souhaiteriez des valeurs incrémentées en sortie.

for i in range(1, 30, 5):
    print(i, end =" ")

Sortie :

1 6 11 16 21 26

RevAutre plage : décrémenter les valeurs en utilisant un pas négatif

Le paramètre step avec une valeur négative dans range() peut être utilisé pour obtenir des valeurs décrémentées. Dans l'exemple ci-dessous, la valeur du pas est négative, la sortie sera donc décrémentée par rapport à la valeur de plage donnée.

for i in range(15, 5, -1):
    print(i, end =" ")

Sortie :

15 14 13 12 11 10 9 8 7 6

La valeur de départ est 15, la valeur d'arrêt est 5 et la valeur de pas est un nombre négatif, c'est-à-dire -1. Avec les entrées ci-dessus, la fonction range() décrémentera la valeur de 15 jusqu'à ce qu'elle atteigne la valeur d'arrêt, mais ici la différence est que la dernière valeur sera stop + 1.

Utilisation de nombres flottants dans Python intervalle()

Travaillons maintenant sur range() en utilisant des nombres à virgule flottante.

Mise en situation :

for i in range(10.5):
    print(i, end =" ")

Dans l'exemple ci-dessus, nous avons utilisé la valeur d'arrêt comme 10.5.

La sortie est:

Traceback (most recent call last):
  File "python_range.py", line 1, in <module>
    for i in range(10.5):
TypeError: 'float' object cannot be interpreted as an integer

Python donne une erreur car la fonction range() ne prend pas en charge les nombres à virgule flottante pour le démarrage, l'arrêt et l'étape.

Utiliser la boucle for avec Python intervalle()

Dans cet exemple, nous utiliserons un tableau de nombres et voyons comment utiliser l'itération du tableau à l'intérieur de la boucle for en utilisant range()

Mise en situation :

arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase']

for i in range(len(arr_list)):
    print(arr_list[i], end =" ")

Sortie :

MysqlMongodb PostgreSQL Firebase

Dans l'exemple ci-dessus, nous avons utilisé len(arr_list) comme valeur d'arrêt. La boucle for itérera jusqu'à la valeur d'arrêt, c'est-à-dire la longueur du tableau et ce sera 4, car nous avons quatre éléments dans l'arr_list. La valeur de départ sera 0 et le pas sera 1. Les valeurs commenceront donc à 0 et s'arrêteront à 3, c'est-à-dire la longueur du tableau -1, ce qui signifie 4 -1 = 3.

En utilisant Python range() sous forme de liste

Dans cet exemple, nous verrons comment utiliser la sortie de la plage sous forme de liste.

Mise en situation :

print(list(range(10)))

Sortie :

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Vous pouvez voir que la sortie est un format de liste. Il n'était pas nécessaire de boucler le range() et en utilisant la méthode list(), nous pouvions directement convertir la sortie du format plage au format liste.

Utiliser des caractères dans la plage Python()

Jusqu'à présent, nous avons utilisé des entiers dans python range(). Nous avons également vu que les nombres à virgule flottante ne sont pas pris en charge dans la plage Python. Essayons de voir le résultat de ce qui se passe lorsque nous utilisons des caractères.

Mise en situation :

for c in range ('z'):
        print(c, end =" ")

Sortie :

Traceback (most recent call last):
  File "python_range.py", line 1, in <module>
    for c in range ('z'):
TypeError: 'str' object cannot be interpreted as an integer

Il renvoie une erreur indiquant qu'une chaîne ne peut pas être interprétée comme un entier.

Pour obtenir la liste des alphabets, vous pouvez personnaliser le code et obtenir le résultat souhaité, comme indiqué ci-dessous :

Mise en situation :

def get_alphabets(startletter, stopletter, step):
    for c in range(ord(startletter.lower()), ord(stopletter.lower()), step):
        yield chr(c)

print(list(get_alphabets("a", "h", 1)))

Sortie :

['a', 'b', 'c', 'd', 'e', 'f', 'g']

Comment accéder aux éléments de plage

Vous pouvez utiliser une boucle for pour obtenir les valeurs de la plage ou utiliser l'index pour accéder aux éléments de range().

Utiliser la boucle for

Mise en situation :

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

Sortie :

0
1
2
3
4
5

Utilisation de l'index

L'index est utilisé avec range pour obtenir la valeur disponible à cette position. Si la valeur de la plage est 5, pour obtenir la valeur de départ, vous pouvez utiliser range(5)[0] et la valeur suivante range(5)[1] et ainsi de suite.

Mise en situation :

startvalue = range(5)[0] 
print("The first element in range is = ", startvalue) 

secondvalue = range(5)[1] 
print("The second element in range is = ", secondvalue) 

lastvalue = range(5)[-1]
print("The first element in range is = ", lastvalue)

Sortie :

The first element in range is =  0
The second element in range is =  1
The first element in range is =  4

Utiliser la liste()

Cette méthode imprimera tous les éléments de range(). En utilisant list(), les éléments de range() seront renvoyés au format liste.

Mise en situation :

print(list(range(10)))

Sortie :

 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Il donne la sortie de liste pour la plage donnée.

Exemple : obtenez des nombres pairs en utilisant range()

L’utilisation de range() obtiendra la liste des nombres pairs dans la plage donnée en entrée. Les paramètres de range() sont, start est 2, stop est 20 et step est 2, donc les valeurs seront incrémentées de 2 et donneront des nombres pairs jusqu'à l'arrêt-2.

Mise en situation :

for i in range(2, 20, 2):
    print(i, end =" ")

Sortie :

2 4 6 8 10 12 14 16 18

Fusionner les sorties two-range()

Dans cet exemple, nous concaténerons 2 fonctions range() à l’aide de la fonction chain() du module itertools.

Mise en situation :

from itertools import chain 

print("Merging two range into one") 
frange =chain(range(10), range(10, 20, 1))
for i in frange: 
    print(i, end=" ")

Sortie :

Merging two range into one
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Utiliser range() avec NumPy

Le module NumPy a la fonction arange() qui fonctionne et donne une sortie similaire à celle de range(). arrange() prend les mêmes paramètres que range().

syntaxe:

arange(start, stop, step)

Pour travailler avec NumPy, suivez les étapes ci-dessous.

Étape 1: Importer le module NumPy

import numpy

Si lors de l'exécution, une erreur indique que le module numpy est introuvable, vous devez installer le module comme indiqué à l'étape 2.

Étape 2: Installer NumPy

pip install numpy

Étape 3: Exemple fonctionnel d'arange() utilisant NumPy

import numpy as np 

for  i in np.arange(10):
   print(i, end =" ")        

Sortie :

0 1 2 3 4 5 6 7 8 9

Nombres à virgule flottante utilisant NumPy arange()

Il n'est pas possible d'obtenir la séquence à virgule flottante en utilisant range(), mais c'est possible en utilisant NumPy arange().

Mise en situation :

La plage que nous souhaitons est de 0.5 à 1.5. La valeur sera incrémentée de 0.2.

import numpy as np 

for  i in np.arange(0.5, 1.5, 0.2):
   print(i, end =" ")        

Sortie :

0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998

Le résultat que nous obtenons est un peu bizarre, certains nombres flottants sont affichés avec 16 décimales. Cela se produit en raison de la complexité du stockage des nombres décimaux flottants au format binaire. Vous pouvez également arrondir les valeurs si nécessaire et les limiter aux décimales dont vous avez besoin.

Résumé

  • Python range() est une fonction intégrée disponible avec Python de Python(3.x), et il donne une séquence de nombres basée sur l'index de début et d'arrêt donné. Si l'index de début n'est pas donné, l'index est considéré comme 0, et il incrémentera la valeur jusqu'à l'index d'arrêt.
  • Python range() a été introduit à partir de Python version 3, avant cela, xrange() était la fonction.
  • Le range() donne la séquence de nombres et renvoie une liste de nombres. La fonction xrange() donne un objet générateur qui doit être bouclé dans une boucle for pour obtenir les valeurs.
  • Le paramètre step dans range() peut être utilisé pour incrémenter/décrémenter les valeurs. Par défaut, c'est une valeur positive 1. Cela donnera donc toujours des valeurs incrémentées.
  • Python donne une erreur pour les nombres à virgule flottante car la fonction range() ne prend en charge que les valeurs entières.
  • Les valeurs de range() sont accessibles en utilisant la boucle for, en utilisant index et list()
  • Le module NumPy a la fonction arange() qui fonctionne et donne une sortie similaire à celle de range(). arange() prend les mêmes paramètres que range().
  • Il est possible d'obtenir la séquence à virgule flottante NumPy arange() qui n'est pas prise en charge en utilisant range().

Newsletter quotidienne de Guru99

Commencez votre journée avec les dernières et plus importantes actualités sur l'IA diffusées dès maintenant.