Python Rang() Funkcija: Float, List, Primjeri petlje For
Što je Python Raspon?
Python range() je ugrađena funkcija dostupna s Python iz Python(3.x), i daje niz brojeva na temelju danog početnog i završnog indeksa. U slučaju da početni indeks nije dan, indeks se smatra 0, te će povećavati vrijednost za 1 do indeksa zaustavljanja.
Na primjer, range(5) će vam dati vrijednosti 0,1,2,3,4 Python range() je vrlo korisna naredba i uglavnom se koristi kada morate ponavljati koristeći for petlju.
Sintaksa
range(start, stop, step)
Parametri
- početak: (neobavezno) Indeks početka je cijeli broj, a ako nije dan, zadana vrijednost je 0.
- Stop: Indeks zaustavljanja određuje vrijednost na kojoj se funkcija raspona mora zaustaviti. To je obavezan unos za funkciju raspona. Zadnja vrijednost će uvijek biti 1 manja od granične vrijednosti.
- korak: (neobavezno). Vrijednost koraka je broj za koji se sljedeći broj u rasponu mora povećati, prema zadanim postavkama, to je 1.
Povratna vrijednost
Povratna vrijednost je niz brojeva od zadanog indeksa početka do kraja.
Python range() Funkcija i povijest
Python range() uveden je iz verzije 3 pythona, prije toga xrange() je bila funkcija.
I raspon i xrange() koriste se za proizvodnju niza brojeva.
Slijede razlike između raspona i xrange():
raspon() | xrange() |
---|---|
Rang() daje niz brojeva i vraća popis brojeva. | Funkcija xrange() daje generatorski objekt koji se mora pokrenuti u for-petlji da bi se dobile vrijednosti. |
Rang() vraća popis. | xrange() vraća objekt generatora. |
Metoda range() koristi više memorije jer se vraćeni popis mora pohraniti u usporedbi s xrange(). | Budući da xrange() vraća objekt generatora, ne daje vrijednosti odmah i mora se koristiti unutar for-petlje da bi se dobile vrijednosti. |
Korištenje memorije je veće, stoga je izvršavanje koda sporije kada se radi na velikom skupu podataka. | Izvršenje koda je brže korištenjem xrange(). |
Korištenje raspona()
Ovaj primjer pokazuje kako ispisati vrijednosti od 0-9 pomoću range().
Vrijednost koja se koristi u rasponu je 10, tako da je izlaz 0 1 2 3 4 5 6 7 8 9
Budući da početak nije dan, početak se smatra 0, a zadnja vrijednost je dana do 9. Zadnja vrijednost je uvijek 1 manja od dane vrijednosti, tj. stop-1.
for i in range(10): print(i, end =" ")
Izlaz:
0 1 2 3 4 5 6 7 8 9
Korištenje početka i zaustavljanja u rasponu ()
U kodu, početna vrijednost je 3, a krajnja vrijednost je 10. Ovdje je početni indeks 3, tako da će niz brojeva započeti od 3 do krajnje vrijednosti. Posljednja vrijednost u nizu bit će 1 manja od zaustavne vrijednosti 10-1 = 9.
for i in range(3, 10): print(i, end =" ")
Izlaz:
3 4 5 6 7 8 9
Korištenje start, stop i step
Početna vrijednost je 3, tako da će niz brojeva započeti na 3. Završna vrijednost je 10, tako da će niz brojeva završiti na (10-1), tj. 9. Korak je 2, tako da će svaka vrijednost u nizu povećati za 2. Ako vrijednost koraka nije navedena, vrijednost za korak je zadana 1.
for i in range(3, 10, 2): print(i, end =" ")
Izlaz:
3 5 7 9
Do sada smo vidjeli kako funkcija range() daje povećanu vrijednost za danu zaustavnu vrijednost. Pokušajmo sada s primjerom dobiti smanjenu vrijednost u danom rasponu.
Povećanje vrijednosti u rasponu pomoću pozitivnog koraka.
Korak parametra u rasponu() može se koristiti za povećanje/smanjenje vrijednosti. Prema zadanim postavkama, to je pozitivna vrijednost 1. Dakle, uvijek će dati povećane vrijednosti.
Vrijednost koraka mora biti pozitivna u slučaju da želite povećanje vrijednosti kao izlaz.
for i in range(1, 30, 5): print(i, end =" ")
Izlaz:
1 6 11 16 21 26
Reverse Raspon: Smanjenje vrijednosti pomoću negativnog koraka
Korak parametra s negativnom vrijednošću u rasponu() može se koristiti za dobivanje dekrementiranih vrijednosti. U donjem primjeru vrijednost koraka je negativna tako da će izlaz biti dekrementiran od dane vrijednosti raspona.
for i in range(15, 5, -1): print(i, end =" ")
Izlaz:
15 14 13 12 11 10 9 8 7 6
Početna vrijednost je 15, završna vrijednost je 5, a vrijednost koraka je negativan broj, tj. -1. S gornjim unosima funkcija range() smanjit će vrijednost od 15 na dalje dok ne dosegne zaustavnu vrijednost, ali ovdje je razlika u tome što će zadnja vrijednost biti stop + 1.
Korištenje plutajućih brojeva u Python raspon()
Poradimo sada na range() koristeći brojeve s pomičnim zarezom.
Primjer:
for i in range(10.5): print(i, end =" ")
U gornjem primjeru koristili smo graničnu vrijednost kao 10.5.
Izlaz je:
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 daje pogrešku jer funkcija range() ne podržava brojeve s pomičnim zarezom za početak, zaustavljanje i korak.
Korištenje for-petlje sa Python raspon()
U ovom primjeru koristit ćemo niz brojeva i pogledajmo kako koristiti iteraciju niza unutar for-petlje koristeći range()
Primjer:
arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase'] for i in range(len(arr_list)): print(arr_list[i], end =" ")
Izlaz:
MysqlMongodb PostgreSQL Firebase
U gornjem primjeru koristili smo len(arr_list) kao zaustavnu vrijednost. Petlja for će ponavljati do zaustavne vrijednosti, tj. duljine niza i to će biti 4, jer imamo četiri stavke u arr_list. Početna vrijednost bit će 0, a korak će biti 1. Dakle, vrijednosti će početi od 0 i zaustavit će se na 3, tj. duljini niza -1 što znači 4 -1 = 3.
Korištenje Python range() kao popis
U ovom primjeru ćemo vidjeti kako iskoristiti izlaz iz raspona kao popis.
Primjer:
print(list(range(10)))
Izlaz:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Možete vidjeti da je izlaz format popisa. Nije bilo potrebno ponavljati range() i pomoću metode list() mogli smo izravno pretvoriti izlaz iz raspona u format popisa.
Korištenje znakova u python range()
Do sada smo koristili cijele brojeve u python range(). Također smo vidjeli da brojevi s pomičnim zarezom nisu podržani u rasponu pythona. Pokušajmo vidjeti rezultat što se događa kada koristimo znakove.
Primjer:
for c in range ('z'): print(c, end =" ")
Izlaz:
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
Izbacuje pogrešku govoreći da se niz ne može interpretirati kao cijeli broj.
Da biste dobili popis abeceda, možete prilagoditi kod i dobiti željene rezultate prikazane u nastavku:
Primjer:
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)))
Izlaz:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
Kako pristupiti elementima raspona
Možete koristiti for-petlju za dobivanje vrijednosti iz raspona ili koristiti indeks za pristup elementima iz raspona().
Korištenje for-petlje
Primjer:
for i in range(6): print(i)
Izlaz:
0 1 2 3 4 5
Korištenje indeksa
Indeks se koristi s rasponom kako bi se dobila vrijednost dostupna na toj poziciji. Ako je vrijednost raspona 5, da biste dobili početnu vrijednost, možete koristiti range(5)[0] i sljedeći raspon vrijednosti(5)[1] i tako dalje.
Primjer:
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)
Izlaz:
The first element in range is = 0 The second element in range is = 1 The first element in range is = 4
Korištenje liste()
Ova metoda će ispisati sve elemente iz range(). Korištenjem list() vratit će elemente iz range() u formatu liste.
Primjer:
print(list(range(10)))
Izlaz:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Daje izlaz popisa za zadani raspon.
Primjer: Dohvatite parne brojeve pomoću range()
Korištenje range() će dobiti popis parnih brojeva u rasponu danom kao ulaz. Parametri za range() su, start je 2, stop je 20, a step je 2, tako da će se vrijednosti povećati za 2 i davat će parne brojeve do stop-2.
Primjer:
for i in range(2, 20, 2): print(i, end =" ")
Izlaz:
2 4 6 8 10 12 14 16 18
Spajanje dva-range() izlaza
U ovom će se primjeru spojiti 2 funkcije range() uz pomoć funkcije itertools modula chain().
Primjer:
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=" ")
Izlaz:
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
Korištenje range() s NumPy
Modul NumPy ima funkciju arange() koja radi i daje sličan izlaz kao range(). Arrange() uzima iste parametre kao range().
Sintaksa:
arange(start, stop, step)
Za rad s NumPyjem slijedite dolje navedene korake.
Korak 1: Uvoz NumPy modula
import numpy
U slučaju da se tijekom izvođenja pojavi pogreška koja kaže da numpy modul nije pronađen, morate instalirati modul kao što je prikazano u koraku 2.
Korak 2: Instalirajte NumPy
pip install numpy
Korak 3: Radni primjer arange() koristeći NumPy
import numpy as np for i in np.arange(10): print(i, end =" ")
Izlaz:
0 1 2 3 4 5 6 7 8 9
Brojevi s pomičnim zarezom koristeći NumPy arange()
Nije moguće dobiti slijed s pomičnim zarezom pomoću range(), ali je moguće pomoću NumPy arange().
Primjer:
Raspon koji želimo je od 0.5 do 1.5. Vrijednost će se povećati za 0.2.
import numpy as np for i in np.arange(0.5, 1.5, 0.2): print(i, end =" ")
Izlaz:
0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998
Izlaz koji dobivamo je malo čudan, neki od brojeva s pomičnim zarezom prikazani su sa 16 decimalnih mjesta. To se događa zbog složenosti pohranjivanja decimalnih pomičnih brojeva u binarni format. Također možete zaokružiti vrijednosti ako je potrebno i ograničiti ih na decimalna mjesta koja su vam potrebna.
rezime
- Python range() je ugrađena funkcija dostupna s Python iz Python(3.x), i daje niz brojeva na temelju danog početnog i završnog indeksa. U slučaju da početni indeks nije dan, indeks se smatra 0, te će povećavati vrijednost do indeksa zaustavljanja.
- Python range() je uveden iz python verzija 3, prije toga xrange() je bila funkcija.
- Rang() daje niz brojeva i vraća popis brojeva. Funkcija xrange() daje generatorski objekt koji se mora pokrenuti u for-petlji da bi se dobile vrijednosti.
- Korak parametra u rasponu() može se koristiti za povećanje/smanjenje vrijednosti. Prema zadanim postavkama, to je pozitivna vrijednost 1. Dakle, uvijek će dati povećane vrijednosti.
- Python daje pogrešku za brojeve s pomičnim zarezom jer funkcija range() podržava samo cjelobrojne vrijednosti.
- Vrijednostima iz range() može se pristupiti pomoću for-loop, koristeći index i list()
- Modul NumPy ima funkciju arange() koja radi i daje sličan izlaz kao range(). arange() uzima iste parametre kao range().
- Moguće je dobiti slijed s pomičnim zarezom NumPy arange() koji nije podržan korištenjem range().