Python Rang() Funkcija: Float, List, Primjeri petlje For

โšก Pametni saลพetak

Python range() je ugraฤ‘ena funkcija koja generira nepromjenjivi niz cijelih brojeva od poฤetne vrijednosti do, ali ne ukljuฤujuฤ‡i, krajnje vrijednosti, koristeฤ‡i opcionalni korak za kontrolu prirasta.

  • ๐Ÿ”˜ Sintaksa: range(start, stop, step) prihvaฤ‡a do tri cjelobrojna argumenta, gdje je start zadano 0, a step zadano 1.
  • โ˜‘๏ธ Ekskluzivna stanica: Niz uvijek zaustavlja jednu vrijednost prije indeksa zaustavljanja, pa range(5) vraฤ‡a vrijednosti od 0 do 4.
  • โœ… Kontrola koraka: Pozitivan korak poveฤ‡ava vrijednosti, dok negativni korak broji unatrag za obrnuti raspon.
  • ๐Ÿงช Ograniฤenja tipova: Prihvaฤ‡aju se samo cijeli brojevi, pa argumenti s pomiฤnim zarezom ili nizovi znakova izazivaju greลกku TypeError.
  • ๐Ÿ› ๏ธ NumPy brojevi s pomiฤnim zarezom: Funkcija NumPy arange() proลกiruje ponaลกanje funkcije range() na nizove s pomiฤnim zarezom.
  • ๐Ÿค– Tijekovi rada umjetne inteligencije: Kod strojnog uฤenja oslanja se na range() za iteraciju epoha treniranja, mini-serija i mreลพa hiperparametara.

Python Rang() funkcija

ล 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 ispisati vrijednosti 0, 1, 2, 3, 4. Python range() je vrlo korisna naredba i uglavnom se koristi kada morate iterirati pomoฤ‡u za petlju.

Sintaksa

Sintaksa funkcije range() prikazana je u nastavku:

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 obavezni ulaz u funkciju raspona. Posljednja vrijednost uvijek ฤ‡e biti za 1 manja od vrijednosti zaustavljanja.
  • 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() je uveden iz Python verzija 3; prije toga, xrange() je bila funkcija.

I range() i xrange() se koriste za generiranje niza brojeva.

Slijede razlike izmeฤ‘u range() 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 za dobivanje vrijednosti.
Koriลกtenje memorije je veฤ‡e, stoga je izvrลกavanje koda sporo pri radu s velikim skupom 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 koriลกtena u rasponu je 10, pa je izlaz 0 1 2 3 4 5 6 7 8 9.

Buduฤ‡i da poฤetak nije zadan, poฤetak se smatra 0, a zadnja vrijednost je zadana do 9. Zadnja vrijednost je uvijek za 1 manja od zadane vrijednosti, tj. zaustavljanje-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 je poฤetna vrijednost 3, a krajnja vrijednost 10. Ovdje je poฤetni indeks 3, pa ฤ‡e niz brojeva poฤeti od 3 do krajnje vrijednosti. Posljednja vrijednost u nizu bit ฤ‡e za 1 manja od krajnje 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, pa ฤ‡e niz brojeva zapoฤeti od 3. Zavrลกna vrijednost je 10, pa ฤ‡e niz brojeva zavrลกiti na (10-1), tj. 9. Korak je 2, pa ฤ‡e se svaka vrijednost u nizu poveฤ‡ati za 2. Ako vrijednost koraka nije navedena, vrijednost za korak je zadana na 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 zadanu vrijednost zaustavljanja. Pokuลกajmo sada primjerom dobiti smanjenu vrijednost u zadanom rasponu.

Poveฤ‡anje vrijednosti u rasponu koriลกtenjem pozitivnog koraka

Parametar step u range() moลพe se koristiti za poveฤ‡anje ili smanjenje vrijednosti. Prema zadanim postavkama, to je pozitivna vrijednost, 1. Dakle, uvijek ฤ‡e davati poveฤ‡ane vrijednosti.

Vrijednost koraka mora biti pozitivna ako ลพelite inkrementirane vrijednosti kao izlaz.

for i in range(1, 30, 5):
    print(i, end =" ")

Izlaz:

1 6 11 16 21 26

Reverse Raspon: Smanjenje vrijednosti negativnim korakom

Parametar step s negativnom vrijednoลกฤ‡u u range() moลพe se koristiti za dobivanje smanjenih vrijednosti. U donjem primjeru, vrijednost stepa je negativna, pa ฤ‡e se izlaz smanjivati โ€‹โ€‹od zadane 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, krajnja vrijednost je 5, a vrijednost koraka je negativni broj, tj. -1. S gore navedenim ulazima, funkcija range() ฤ‡e smanjivati โ€‹โ€‹vrijednost od 15 nadalje dok ne dosegne krajnju vrijednost, ali ovdje je razlika u tome ลกto ฤ‡e posljednja vrijednost biti krajnja vrijednost + 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 stop vrijednost od 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 vraฤ‡a greลกku jer funkcija range() ne podrลพava brojeve s pomiฤnim zarezom za poฤetak, kraj i korak.

Koriลกtenje for-petlje sa Python raspon()

U ovom primjeru koristit ฤ‡emo niz brojeva i vidjeti kako iterirati niz 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 zavrลกnu vrijednost. Petlja for ฤ‡e iterirati do zavrลกne vrijednosti, tj. duljine niza, koja ฤ‡e biti 4, buduฤ‡i da imamo ฤetiri stavke u arr_list. Poฤetna vrijednost bit ฤ‡e 0, a korak 1, pa ฤ‡e vrijednosti poฤeti od 0 i zaustaviti se na 3, tj. duljina 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ลกtenjem funkcije range() dobit ฤ‡ete popis parnih brojeva u rasponu zadanom kao ulaz. Parametri za range() su: start je 2, stop je 20, a step je 2, tako da ฤ‡e se vrijednosti poveฤ‡avati 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 primjeru, spojit ฤ‡emo 2 funkcije range() uz pomoฤ‡ funkcije chain() modula itertools.

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

NumPy modul ima funkciju arange() koja radi i daje sliฤan izlaz kao range(). Funkcija arange() prima iste parametre kao i range().

Sintaksa:

arange(start, stop, step)

Za rad s NumPy-jem, slijedite dolje navedene korake.

Korak 1: Uvoz NumPy modula

import numpy

U sluฤaju da se tijekom izvrลกavanja pojavi greลกka u kojoj se kaลพe da numpy modul nije pronaฤ‘en, potrebno je instalirati modul kao ลกto je prikazano u koraku 2.

Korak 2Instalirajte 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 niz s pomiฤnim zarezom pomoฤ‡u range(), ali je moguฤ‡e pomoฤ‡u NumPy arange().

Primjer:

ลฝeljeni raspon je od 0.5 do 1.5. Vrijednost ฤ‡e se poveฤ‡avati 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 brojeva s pomiฤnim zarezom u binarnom formatu. Takoฤ‘er moลพete zaokruลพiti vrijednosti ako je potrebno i ograniฤiti ih na potreban broj decimala.

Pitanja i odgovori

In Python 3, range() vraฤ‡a lijeni, nepromjenjivi objekt raspona, a ne popis. Generira brojeve na zahtjev. Omotajte ga u list(range(n)) kada je potreban stvarni popis. Python 2 je vratilo potpuni popis.

Vrijednost zaustavljanja je iskljuฤiva tako da se range(len(items)) ฤisto mapira na indekse koji se temelje na nuli. Da biste ukljuฤili krajnju toฤku, dodajte jedan na zaustavljanje, na primjer range(1, 11) za brojanje od 1 do 10.

Ne. Pozivanje range(0, 10, 0) podiลพe ValueError: range() arg 3 ne smije biti nula, jer nulti korak nikada ne bi mogao dosegnuti vrijednost zaustavljanja i petlja bi se ponavljala zauvijek. Umjesto toga koristite pozitivan ili negativan korak.

range() odbacuje float brojeve, ali razumjevanje liste moลพe skalirati cijele brojeve: [x * 0.5 for x in range(0, 6)] daje 0.0 do 2.5. Time se izbjegava uvoz NumPy-a dok se joลก uvijek izvrลกava korakping putem decimalnih vrijednosti.

Da. Objekt range pohranjuje samo poฤetne, zavrลกne i korak vrijednosti, pa range(1000000) koristi istu malu, konstantnu koliฤinu memorije kao i range(10). Vrijednosti se izraฤunavaju jedna po jedna tijekom iteracije.

Koristite operator in: 5 in range(0, 10) vraฤ‡a True. Za objekte raspona, Python izvodi ovaj test pripadnosti brzom aritmetikom u konstantnom vremenu umjesto skeniranja svakog elementa, tako da ostaje uฤinkovit na velikim rasponima.

Kรดd za strojno uฤenje koristi range() za petlju kroz epohe uฤenja, iteraciju mini-serija i izgradnju mreลพa hiperparametara. NumPy arange() i linspace() proลกiruju ovo na raspone s pomiฤnim zarezom za rasporede brzine uฤenja i pomicanja pragova uobiฤajena u eksperimentima s umjetnom inteligencijom.

Da. Pomoฤ‡nici za AI kodiranje poput GitHub Copilot petlji temeljenih na automatskom dovrลกavanju range() iz komentara ili naziva funkcije i agentski alati mogu refaktorirati petlje indeksa u ฤiลกฤ‡e obrasce enumerate() ili comprehension, iako generirane granice i dalje zahtijevaju brzi pregled.

Saลพmite ovu objavu uz: