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.