Python range() Funzione: Float, Elenco, Ciclo For Esempi
Cosa è Python Gamma?
Python range() è una funzione integrata disponibile con Python da Python(3.x), e fornisce una sequenza di numeri basata sull'indice di inizio e fine fornito. Nel caso in cui l'indice di inizio non sia fornito, l'indice è considerato come 0, e incrementerà il valore di 1 fino all'indice di fine.
Ad esempio range(5) restituirà i valori 0,1,2,3,4 .The Python range() è un comando molto utile e utilizzato principalmente quando è necessario eseguire iterazioni utilizzando il ciclo for.
Sintassi
range(start, stop, step)
Scheda Sintetica
- inizio: (facoltativo) L'indice iniziale è un numero intero e, se non fornito, il valore predefinito è 0.
- smettere: L'indice di stop decide il valore al quale la funzione range deve fermarsi. È un input obbligatorio per la funzione di intervallo. L'ultimo valore sarà sempre inferiore di 1 rispetto al valore di stop.
- passo: (opzionale). Il valore del passo è il numero di cui deve essere incrementato il numero successivo dell'intervallo; per impostazione predefinita è 1.
Valore di ritorno
Il valore restituito è una sequenza di numeri dall'inizio all'indice di arresto specificato.
Python range() Funzione e cronologia
Python range() è stato introdotto a partire dalla versione 3 di Python, prima che la funzione fosse xrange().
Sia range che xrange() vengono utilizzati per produrre una sequenza di numeri.
Di seguito sono riportate le differenze tra range e xrange():
gamma() | intervallo() |
---|---|
Il range() fornisce la sequenza di numeri e restituisce un elenco di numeri. | La funzione xrange() fornisce un oggetto generatore che deve essere ripetuto in un ciclo for per ottenere i valori. |
Il range() restituisce una lista. | xrange() restituisce un oggetto generatore. |
Il metodo range() utilizza più memoria poiché l'elenco restituito deve essere archiviato rispetto a xrange(). | Poiché xrange() restituisce un oggetto generatore, non fornisce valori istantaneamente e deve essere utilizzato all'interno del ciclo for per ottenere i valori. |
L'utilizzo della memoria è maggiore, quindi l'esecuzione del codice è lenta quando si lavora su un enorme insieme di dati. | L'esecuzione del codice è più veloce utilizzando xrange(). |
Utilizzando l'intervallo()
Questo esempio mostra come stampare i valori da 0 a 9 utilizzando range().
Il valore utilizzato nell'intervallo è 10, quindi l'output è 0 1 2 3 4 5 6 7 8 9
Poiché l'inizio non è dato, l'inizio è considerato come 0 e l'ultimo valore è dato fino a 9. L'ultimo valore è sempre 1 in meno del valore dato, cioè stop-1.
for i in range(10): print(i, end =" ")
Produzione:
0 1 2 3 4 5 6 7 8 9
Utilizzando start e stop nell'intervallo()
Nel codice, il valore iniziale è 3 e il valore finale è 10. Qui l'indice iniziale è 3, quindi la sequenza di numeri inizierà da 3 fino al valore finale. L'ultimo valore nella sequenza sarà inferiore di 1 rispetto al valore di arresto 10-1 = 9.
for i in range(3, 10): print(i, end =" ")
Produzione:
3 4 5 6 7 8 9
Utilizzando start, stop e step
Il valore iniziale è 3, quindi la sequenza di numeri inizierà da 3. Il valore finale è 10, quindi la sequenza di numeri si fermerà a (10-1), ovvero 9. Il passo è 2, quindi ogni valore nella sequenza verrà essere incrementato di 2. Se il valore del passo non viene fornito, il valore predefinito per il passo è 1.
for i in range(3, 10, 2): print(i, end =" ")
Produzione:
3 5 7 9
Finora abbiamo visto come la funzione range() fornisce il valore incrementato per il valore di stop fornito. Proviamo ora un esempio per ottenere il valore decrementato nell'intervallo indicato.
Incremento dei valori nell'intervallo utilizzando un passo positivo.
Il parametro step in range() può essere utilizzato per incrementare/decrementare i valori. Per impostazione predefinita, è un valore positivo 1. Quindi fornirà sempre valori incrementati.
Il valore del passo deve essere positivo nel caso in cui si desiderino valori incrementati come output.
for i in range(1, 30, 5): print(i, end =" ")
Produzione:
1 6 11 16 21 26
Reverse Range: decrementa i valori utilizzando il passo negativo
Il passaggio del parametro con valore negativo in range() può essere utilizzato per ottenere valori decrementati. Nell'esempio seguente il valore del passo è negativo, quindi l'uscita sarà decrementata rispetto al valore dell'intervallo fornito.
for i in range(15, 5, -1): print(i, end =" ")
Produzione:
15 14 13 12 11 10 9 8 7 6
Il valore iniziale è 15, il valore finale è 5 e il valore del passo è un numero negativo, ovvero -1. Con gli input precedenti la funzione range() decrementerà il valore da 15 in poi fino a raggiungere il valore di stop, ma qui la differenza è che l'ultimo valore sarà stop + 1.
Utilizzo di numeri mobili in Python gamma()
Lavoriamo ora su range() utilizzando numeri in virgola mobile.
Esempio:
for i in range(10.5): print(i, end =" ")
Nell'esempio sopra abbiamo utilizzato il valore di stop come 10.5.
L'uscita è:
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 genera un errore poiché la funzione range() non supporta numeri in virgola mobile per inizio, fine e passo.
Utilizzo del ciclo for con Python gamma()
In questo esempio utilizzeremo un array di numeri e vediamo come utilizzare l'iterazione dell'array all'interno del ciclo for utilizzando range()
Esempio:
arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase'] for i in range(len(arr_list)): print(arr_list[i], end =" ")
Produzione:
MysqlMongodb PostgreSQL Firebase
Nell'esempio precedente abbiamo utilizzato len(arr_list) come valore di stop. Il ciclo for ripeterà fino al valore di stop, ovvero la lunghezza dell'array, che sarà 4, poiché abbiamo quattro elementi nell'arr_list. Il valore iniziale sarà 0 e il passaggio sarà 1. Quindi i valori inizieranno da 0 e si fermeranno a 3, ovvero la lunghezza dell'array -1 significa 4 -1 = 3.
utilizzando Python range() come elenco
In questo esempio vedremo come utilizzare l'output di range come elenco.
Esempio:
print(list(range(10)))
Produzione:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Puoi vedere che l'output è un formato elenco. Non era necessario eseguire il loop di range() e utilizzando il metodo list() potevamo convertire direttamente l'output dal formato range al formato elenco.
Utilizzo dei caratteri nell'intervallo Python()
Finora abbiamo utilizzato numeri interi in Python range(). Abbiamo anche visto che i numeri in virgola mobile non sono supportati nell'intervallo Python. Proviamo a vedere l'output di cosa succede quando usiamo i caratteri.
Esempio:
for c in range ('z'): print(c, end =" ")
Produzione:
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
Genera un errore dicendo che una stringa non può essere interpretata come un numero intero.
Per ottenere l'elenco degli alfabeti è possibile personalizzare il codice e ottenere l'output desiderato, come mostrato di seguito:
Esempio:
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)))
Produzione:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
Come accedere agli elementi dell'intervallo
Puoi utilizzare un ciclo for per ottenere i valori dall'intervallo o utilizzare l'indice per accedere agli elementi da range().
Utilizzo del ciclo for
Esempio:
for i in range(6): print(i)
Produzione:
0 1 2 3 4 5
Utilizzando l'indice
L'indice viene utilizzato con l'intervallo per ottenere il valore disponibile in quella posizione. Se il valore dell'intervallo è 5, per ottenere il valore iniziale, è possibile utilizzare range(5)[0] e il valore successivo range(5)[1] e così via.
Esempio:
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)
Produzione:
The first element in range is = 0 The second element in range is = 1 The first element in range is = 4
Usando lista()
Questo metodo stamperà tutti gli elementi dell'intervallo(). Utilizzando list() restituirà gli elementi da range() in formato elenco.
Esempio:
print(list(range(10)))
Produzione:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Fornisce l'output dell'elenco per l'intervallo indicato.
Esempio: ottieni numeri pari utilizzando range()
Utilizzando range() si otterrà l'elenco dei numeri pari nell'intervallo fornito come input. I parametri per range() sono, start è 2, stop è 20 e step è 2, quindi i valori verranno incrementati di 2 e forniranno numeri pari fino a stop-2.
Esempio:
for i in range(2, 20, 2): print(i, end =" ")
Produzione:
2 4 6 8 10 12 14 16 18
Unione degli output two-range()
In questo esempio concateneremo 2 funzioni range() con l'aiuto della funzione chain() del modulo itertools.
Esempio:
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=" ")
Produzione:
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
Utilizzando range() con NumPy
Il modulo NumPy ha la funzione arange() che funziona e fornisce un output simile a range(). Il metodo organizzare() accetta gli stessi parametri di range().
Sintassi:
arange(start, stop, step)
Per lavorare con NumPy seguire i passaggi indicati di seguito.
Passo 1 : importa il modulo NumPy
import numpy
Nel caso in cui durante l'esecuzione venga visualizzato un errore che indica il modulo Numpy non trovato, è necessario installare il modulo come mostrato nel passaggio 2.
Passo 2 : Installa NumPy
pip install numpy
Passo 3 : Esempio funzionante di arange() utilizzando NumPy
import numpy as np for i in np.arange(10): print(i, end =" ")
Produzione:
0 1 2 3 4 5 6 7 8 9
Numeri in virgola mobile utilizzando NumPy arange()
Non è possibile ottenere la sequenza in virgola mobile utilizzando range(), ma è possibile utilizzando NumPy arange().
Esempio:
L'intervallo che vogliamo è compreso tra 0.5 e 1.5. Il valore verrà incrementato di 0.2.
import numpy as np for i in np.arange(0.5, 1.5, 0.2): print(i, end =" ")
Produzione:
0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998
L'output che otteniamo è un po' strano, alcuni dei numeri float sono mostrati con 16 cifre decimali. Ciò accade a causa della complessità di memorizzare numeri float decimali in formato binario. Puoi anche arrotondare i valori se necessario e limitarli alle cifre decimali di cui hai bisogno.
Sintesi
- Python range() è una funzione integrata disponibile con Python da Python(3.x), e fornisce una sequenza di numeri basata sull'indice di inizio e fine fornito. Nel caso in cui l'indice di inizio non sia fornito, l'indice è considerato come 0, e incrementerà il valore fino all'indice di fine.
- Python range() è stato introdotto da Python versione 3, prima che xrange() fosse la funzione.
- La funzione range() fornisce la sequenza di numeri e restituisce un elenco di numeri. La funzione xrange() fornisce un oggetto generatore che deve essere sottoposto a un ciclo for per ottenere i valori.
- Il parametro step in range() può essere utilizzato per incrementare/decrementare i valori. Per impostazione predefinita, è un valore positivo 1. Quindi fornirà sempre valori incrementati.
- Python genera un errore per i numeri in virgola mobile poiché la funzione range() supporta solo valori interi.
- È possibile accedere ai valori di range() utilizzando for-loop, utilizzando index e list()
- Il modulo NumPy ha la funzione arange() che funziona e fornisce un output simile a range(). arange() accetta gli stessi parametri di range().
- È possibile ottenere la sequenza a virgola mobile NumPy arange() che non è supportata utilizzando range().