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

⚡ Résumé intelligent

Python range() est une fonction intégrée qui génère une séquence immuable d'entiers à partir d'une valeur de départ jusqu'à une valeur d'arrêt, cette dernière n'étant pas incluse, en utilisant un pas optionnel pour contrôler l'incrément.

  • (I.e. syntaxe: range(start, stop, step) accepte jusqu'à trois arguments entiers, où start vaut par défaut 0 et step vaut par défaut 1.
  • ☑️ Arrêt exclusif : La séquence s'arrête toujours une valeur avant l'indice d'arrêt, donc range(5) donne de 0 à 4.
  • Contrôle pas à pas : Un pas positif augmente les valeurs, tandis qu'un pas négatif les diminue pour obtenir une plage inverse.
  • 🧪 Limites de type : Seuls les entiers sont acceptés ; les arguments à virgule flottante ou de type chaîne de caractères lèvent donc une erreur TypeError.
  • Nombres flottants NumPy : La fonction NumPy arange() étend le comportement de range() aux séquences à virgule flottante.
  • 🤖 Flux de travail d'IA : Le code d'apprentissage automatique s'appuie sur range() pour itérer les époques d'entraînement, les mini-lots et les grilles d'hyperparamètres.

Python Fonction range()

Qu'est-ce que le Python Varier?

Python range() est une fonction intégrée disponible avec Python à partir 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) renverra les valeurs 0, 1, 2, 3, 4. Python La fonction range() est très utile et est principalement utilisée lorsqu'il faut itérer sur une chaîne de caractères. pour la boucle.

Syntaxe

La syntaxe de la fonction range() est présentée ci-dessous :

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'indice d'arrêt détermine la valeur à laquelle la fonction range doit s'arrêter. Il s'agit d'un argument obligatoire de la fonction range. 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 prochain nombre de la plage doit être incrémenté ; par défaut, elle est de 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 Python version 3 ; avant cela, la fonction était xrange().

Les fonctions range() et xrange() sont toutes deux utilisées pour produire une séquence de nombres.

Voici les différences 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 fournit pas de valeurs instantanément et doit être utilisé à l'intérieur d'une boucle for pour obtenir les valeurs.
L'utilisation de la mémoire est plus importante, ce qui ralentit l'exécution du code lors du traitement d'un grand 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 la valeur de départ n'est pas indiquée, elle est considérée comme étant 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 ce code, la valeur de départ est 3 et la valeur d'arrêt est 10. L'indice de départ étant 3, la séquence de nombres commence à 3 et se termine à 10. La dernière valeur de la séquence est 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, la séquence de nombres commencera donc à 3. La valeur d'arrêt est 10, la séquence de nombres s'arrêtera donc à (10-1), c'est-à-dire 9. Le pas est de 2, chaque valeur de la séquence sera donc incrémentée de 2. Si la valeur du pas n'est pas spécifiée, sa valeur par défaut est 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() incrémente la valeur de 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 de la plage par pas positif

Le paramètre `step` de la fonction `range()` permet d'incrémenter ou de décrémenter les valeurs. Par défaut, sa valeur est positive (1), ce qui garantit des valeurs toujours incrémentées.

La valeur du pas doit être positive si vous souhaitez obtenir des valeurs incrémentées en sortie.

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

Sortie :

1 6 11 16 21 26

Reverse Plage : Décrémentation des valeurs par pas négatif

Le paramètre `step` avec une valeur négative dans la fonction `range()` permet d'obtenir des valeurs décrémentées. Dans l'exemple ci-dessous, la valeur de `step` est négative ; la valeur de sortie sera donc inférieure à la valeur de la plage spécifié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 le pas est un nombre négatif, soit -1. Avec ces entrées, la fonction range() décrémentera la valeur à partir de 15 jusqu'à atteindre la valeur d'arrêt, mais ici la différence est que la dernière valeur sera arrêt + 1.

Utilisation de nombres flottants dans Python intervalle()

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

Exemple :

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

Dans l'exemple ci-dessus, nous avons utilisé la valeur d'arrêt de 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 génère une erreur car la fonction range() ne prend pas en charge les nombres à virgule flottante pour start, stop et step.

Utiliser la boucle for avec Python intervalle()

Dans cet exemple, nous utiliserons un tableau de nombres et verrons comment parcourir ce tableau à l'intérieur d'une boucle for en utilisant la fonction range().

Exemple :

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` s'exécutera jusqu'à cette valeur d'arrêt, c'est-à-dire la longueur du tableau, qui est de 4, car `arr_list` contient quatre éléments. La valeur de départ est 0 et le pas est de 1 ; les valeurs commenceront donc à 0 et s'arrêteront à 3, soit la longueur du tableau moins 1, ce qui signifie que 4 - 1 = 3.

L'utilisation de Python range() sous forme de liste

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

Exemple :

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.

Exemple :

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 :

Exemple :

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

Exemple :

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.

Exemple :

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.

Exemple :

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()

La fonction `range()` renvoie la liste des nombres pairs compris dans l'intervalle spécifié. Ses paramètres sont : `start` vaut 2, `stop` vaut 20 et `step` vaut 2. Les valeurs sont donc incrémentées de 2, ce qui permet d'obtenir la liste des nombres pairs jusqu'à `stop - 2`.

Exemple :

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 allons concaténer deux fonctions range() à l'aide de la fonction chain() du module itertools.

Exemple :

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 possède une fonction `arange()` qui fonctionne et produit un résultat similaire à celui de `range()`. `arange()` prend les mêmes paramètres que `range()`.

syntaxe:

arange(start, stop, step)

Pour utiliser NumPy, suivez les étapes ci-dessous.

Étape 1: Importer le module NumPy

import numpy

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

Étape 2Installez 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().

Exemple :

La plage souhaitée 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 obtenu est un peu étrange : certains nombres à virgule flottante s'affichent avec 16 décimales. Cela est dû à la complexité du stockage des nombres décimaux à virgule flottante au format binaire. Vous pouvez arrondir les valeurs si nécessaire et limiter le nombre de décimales à votre convenance.

FAQ

In Python 3. La fonction `range()` renvoie un objet `range` immuable et non une liste. Elle génère des nombres à la demande. Utilisez `list(range(n))` lorsqu'une liste est nécessaire. Python 2 a renvoyé une liste complète.

La valeur limite est exclusive afin que `range(len(items))` corresponde parfaitement à des index commençant à zéro. Pour inclure la borne supérieure, ajoutez 1 à la valeur limite ; par exemple, `range(1, 11)` permet de compter de 1 à 10.

Non. L'appel à range(0, 10, 0) génère une erreur ValueError : l'argument 3 de range() ne doit pas être nul, car un pas nul ne pourrait jamais atteindre la valeur d'arrêt et la boucle serait infinie. Utilisez plutôt un pas positif ou négatif.

La fonction `range()` rejette les nombres à virgule flottante, mais une compréhension de liste peut mettre à l'échelle les entiers : `[x * 0.5 for x in range(0, 6)]` produit `0.0` à `2.5`. Cela évite d'importer NumPy tout en conservant la possibilité d'effectuer des itérations.ping par des valeurs décimales.

Oui. Un objet range ne stocke que ses valeurs de début, de fin et de pas ; ainsi, range(1000000) utilise la même quantité de mémoire, infime et constante, que range(10). Les valeurs sont calculées une à une lors de l’itération.

Utilisez l'opérateur in : 5 in range(0, 10) renvoie True. Pour les objets range, Python effectue ce test d'appartenance avec une arithmétique rapide en temps constant plutôt que de parcourir chaque élément, ce qui lui permet de rester efficace sur de très grandes plages de valeurs.

Le code d'apprentissage automatique utilise la fonction `range()` pour parcourir les époques d'entraînement, itérer sur les mini-lots et construire des grilles d'hyperparamètres. Les fonctions `arange()` et `linspace()` de NumPy étendent cette fonctionnalité aux plages de nombres à virgule flottante pour les programmes de taux d'apprentissage et les balayages de seuil courants dans les expériences d'IA.

Oui. Les assistants de codage IA tels que GitHub Copilot complètent automatiquement les boucles basées sur range() à partir d'un commentaire ou d'un nom de fonction, et les outils d'automatisation peuvent restructurer les boucles d'index en modèles enumerate() ou de compréhension plus propres, bien que les limites générées nécessitent toujours une vérification rapide.

Résumez cet article avec :