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: