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().
