La funzione range in Python
La funzione range è uno degli strumenti più utili e versatili in Python, soprattutto quando si tratta di iterare su una sequenza di numeri o di eseguire un'azione un determinato numero di volte all'interno di cicli, come il ciclo for.
Questa funzione genera una sequenza immutabile di numeri, che risulta essere estremamente efficiente in termini di memoria poiché non memorizza tutti i valori contemporaneamente ma genera il prossimo valore solo quando necessario.
In questa guida, esploreremo in dettaglio la funzione range, discutendo la sua sintassi, le sue varianti, e fornendo esempi pratici per dimostrarne l'uso e l'applicabilità.
Sintassi della funzione range
La funzione range in Python può essere utilizzata in diverse forme, a seconda del numero di argomenti forniti:
range(stop)
range(start, stop)
range(start, stop, step)
dove start è il valore iniziale della sequenza (incluso). Se non specificato, il default è 0. Stop è il valore finale della sequenza (escluso), mentre step è la differenza tra ogni numero nella sequenza. Se non specificato, il default è 1. Il valore dello step può essere positivo o negativo, a seconda della direzione desiderata della sequenza.
Esempio di utilizzo della funzione range
Uso della funzione range con un solo argomento:
for i in range(5):
print(i)
Questo esempio stampa i numeri da 0 a 4, utilizzando il valore di default per start (0) e step (1), con stop impostato a 5.
Uso della funzione range con due argomenti:
for i in range(3, 8):
print(i)
Qui, la sequenza inizia da 3 e termina prima di raggiungere 8, con un incremento di 1 per ogni iterazione.
Esempio di utilizzo della funzione range con tutti e tre gli argomenti:
for i in range(1, 10, 2):
print(i)
In questo esempio, start è 1, stop è 10, e step è 2, quindi la sequenza include numeri dispari da 1 a 9.
Iterazione all’indietro con la funzione range
Utilizzando un valore negativo per lo step, è possibile creare una sequenza decrescente:
for i in range(10, 0, -2):
print(i)
In questo modo il ciclo for stampa i numeri pari da 10 a 2 in ordine decrescente.
Creare delle liste con la funzione range
La funzione range può essere utilizzata per generare liste in modo conciso:
quadrati = [x**2 for x in range(5)]
print(quadrati)
In questo modo siamo in grado di creare una lista dei quadrati dei numeri da 0 a 4.
Considerazioni
La funzione range è particolarmente efficiente per iterazioni su grandi set di dati. Essendo un tipo di dati "pigro" (lazy), genera gli elementi uno alla volta e al bisogno, invece di creare l'intera lista in memoria, risultando in un notevole risparmio di risorse.
Inoltre:
La funzione range genera valori che sono strettamente tipizzati come interi.
In Python 3, range restituisce un oggetto "range" che si comporta più come un generatore, mentre in Python 2, range restituisce una lista. Python 2 offre anche xrange per comportamenti simili a range di Python 3.
L'uso di valori negativi per lo step insieme a valori di start e stop appropriati consente di generare sequenze in ordine inverso.
Conclusioni
La funzione range è uno strumento essenziale nel toolkit di ogni programmatore Python. Offre una soluzione semplice ed efficiente per generare sequenze numeriche, rendendola indispensabile per l'iterazione in cicli, in particolare con il ciclo for. Attraverso gli esempi forniti, abbiamo visto come range possa essere utilizzato in vari contesti, dalla generazione di semplici sequenze numeriche all'applicazione in comprensioni di liste e iterazioni all'indietro.