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

La fonction range est souvent utilisée dans les boucles for. En effet, elle permet de générer des séquences de n éléments, sans les stocker en mémoire (contrairement à une liste), ce qui la rend très efficace.

Syntaxe de range

La fonction range s'utilise avec un, deux ou trois arguments : range(start, stop, step). Nous allons voir plusieurs exemples pour illustrer l'utilisation de l'ensemble des paramètres.

range(stop)

Avec un seul argument, range génère une séquence de nombres partant de 0 jusqu'à stop exclu :

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

# Résultat :
# 0
# 1
# 2
# 3
# 4
PYTHON
Un instant

range(start, stop)

Si deux arguments sont passés, la séquence commence à start pour terminer juste avant stop, car nous l'avons vu avant, stop est exclu :

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

# Résultat :
# 2
# 3
# 4
# 5
PYTHON
Un instant

range(start, stop, step)

Le troisième argument définit le pas entre start et stop (exclu) :

for i in range(10, 31, 5):
    print(i)

# Résultat :
# 10
# 15
# 20
# 25
# 30
PYTHON
Un instant

Il est également possible d'utiliser un pas négatif pour créer une séquence décroissante :

# Compte à rebours de 5 à 1
for i in range(5, 0, -1):
    print(i)

# Résultat attendu :
# 5
# 4
# 3
# 2
# 1
PYTHON
Un instant

Utiliser range avec une liste

Nous allons voir dans cette partie que range peut être utilisé pour itérer sur les indices d'une liste ou pour créer une liste de nombres.

Itérer par indice pour modifier une liste

Voici un exemple simple, imaginez vouloir modifier les éléments d'une liste en la parcourant. range(len()) permet l'accès par indice et la réassignation d'une nouvelle valeur :

nombres = [10, 20, 30, 40, 50]
for i in range(len(nombres)):
    nombres[i] = nombres[i] * 2

print(nombres)
# Résultat: [20, 40, 60, 80, 100]
PYTHON
Un instant

À noter

Pour une simple lecture des indices et des éléments, on utilisera le plus souvent la fonction enumerate. Pour une nouvelle liste modifiée, la compréhension de liste est plus pythonique.

Créer une liste de nombres

Le constructeur list combiné avec range permet de créer une liste de manière lisible et concise :

nombres = list(range(1, 11))
print(f"nombres: {nombres}")  # Résultat: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

grosse_liste = list(range(1000))
print(f"grosse_liste: {grosse_liste}")  # Résultat: [0, 1, 2, ..., 999]

liste_avec_pas = list(range(0, 30, 5))
print(f"liste_avec_pas: {liste_avec_pas}")  # Résultat: [0, 5, 10, 15, 20, 25]
PYTHON
Un instant

range et la mémoire

Les chiffres de la séquence ne sont générés qu'au moment où on en a besoin (au moment de l'itération). Il faut aussi savoir que range est de type immuable.

Attention

Bien que range soit efficace en mémoire, si vous faites list(range(1_000_000_000)), votre programme essaiera de stocker un milliard de nombres en mémoire, car ici l'objet range est converti en liste.

Bravo, tu es prêt à passer à la suite

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.