Introduzione

La funzione range in Python genera una sequenza di numeri interi definendo un punto iniziale e finale dell'intervallo. Viene generalmente utilizzato con il ciclo for per scorrere su una sequenza di numeri.

range() funziona diversamente in Python 2 e 3.

In Python 2, ci sono due funzioni che ti consentono di generare una sequenza di numeri interi range e xrange. Queste funzioni sono molto simili, con la differenza principale che range restituisce un elenco e xrange restituisce un oggetto xrange.

In Python 3, la funzione xrange è stata eliminata e la funzione range si comporta in modo simile a xrange di Python 2. In Python 3 range non è una funzione ma piuttosto un type che rappresenta una sequenza immutabile di numeri.

In questo articolo, tratteremo le basi del type range Python 3.

Sintassi di range() in Python

Il costruttore range assume le seguenti forme:

range(stop)
range(start, stop[, step])

Gli argomenti forniti al costruttore range devono essere numeri interi. Numeri float e altri tipi non sono ammessi.

range accetta uno degli argomenti obbligatori e due facoltativi. Restituisce un oggetto intervallo che rappresenta l'intervallo dato e genera i numeri su richiesta.

Python range(stop)

Quando viene fornito un solo argomento, range restituisce una sequenza di numeri, incrementata di 1, a partire da 0 a stop - 1.

Ecco il tipo di intervallo in azione:

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

La sequenza di numeri generata inizia 0 e termina con 4 (5-1):

0
1
2
3
4

Se l'argomento è 0 o un numero intero negativo range restituisce una sequenza vuota:

print(list(range(-5)))

Stiamo convertendo l'oggetto range in un elenco perché range fa una valutazione pigra della sequenza intera. L'output è un elenco vuoto:

[]

Python range(start, stop)

Quando vengono forniti due argomenti, range restituisce una sequenza di numeri, incrementata di 1, a partire da start a stop - 1.

Ecco un esempio:

for i in range(3, 5):
    print(i)
3
4

L'argomento stop deve essere maggiore di start. Altrimenti, la sequenza è vuota:

print(list(range(5, 3)))
[]

È possibile utilizzare 0 numeri interi positivi e negativi come argomenti:

print(list(range(-5, -3)))
[-5, -4]
print(list(range(-3, 0)))
[-3, -2, -1]

Python range(start, stop, step)

Quando vengono forniti tre argomenti, range restituisce una sequenza di numeri, incrementati o decrementati di step, a partire da start a stop - 1.

Se step è positivo, range restituisce una sequenza che aumenta:

for i in range(0, 26, 5):
    print(i)
0
5
10
15
20
25

Durante l'incremento, l'argomento stop deve essere maggiore di start. Altrimenti, la sequenza è vuota.

Se step è negativo, range restituisce una sequenza che diminuisce:

for i in range(20, 4, -5):
    print(i)
20
15
10
5

Durante il decremento, l'argomento stop deve essere inferiore a start. Altrimenti, la sequenza è vuota.

Se step è 0, lo script mostrerà un'eccezione ValueError:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: range() arg 3 must not be zero

Conclusione

Il type range Python ti consente di generare una sequenza di numeri interi. È utilizzato principalmente nei for loop.