Python range() Funcție: Float, Listă, Exemple de buclă For

Ce Este Python Gamă?

Python range() este o funcție încorporată disponibilă cu Python din Python(3.x) și oferă o secvență de numere bazată pe indexul de start și oprire dat. În cazul în care indicele de start nu este dat, indicele este considerat 0 și va crește valoarea cu 1 până la indicele de oprire.

De exemplu, intervalul (5) vă va scoate valorile 0,1,2,3,4 .The Python range() este o comandă foarte utilă și folosită mai ales atunci când trebuie să repetați folosind bucla for.

Sintaxă

range(start, stop, step)

parametrii

  • începe: (opțional) Indexul de început este un număr întreg și, dacă nu este dat, valoarea implicită este 0.
  • Stop: Indicele de oprire decide valoarea la care funcția de interval trebuie să se oprească. Este o intrare obligatorie pentru funcția de interval. Ultima valoare va fi întotdeauna cu 1 mai mică decât valoarea stop.
  • Etapa: (opțional). Valoarea pasului este numărul cu care următorul număr este interval trebuie să fie incrementat, implicit este 1.

Valoare returnată

Valoarea returnată este o secvență de numere de la indexul dat de la început la oprire.

Python range() Funcție și istoric

Python range() a fost introdus din versiunea 3 de python, înainte ca funcția xrange() să fie.

Atât range cât și xrange() sunt folosite pentru a produce o secvență de numere.

Iată diferența dintre interval și xrange():

gamă() xrange()
Range() oferă secvența de numere și returnează o listă de numere. Funcția xrange() oferă un obiect generator care trebuie buclat într-o buclă for pentru a obține valorile.
Range() returnează o listă. xrange() returnează un obiect generator.
Metoda range() folosește mai multă memorie deoarece lista returnată trebuie să fie stocată în comparație cu xrange(). Deoarece xrange() returnează un obiect generator, nu dă valori instantaneu și trebuie utilizat în interiorul buclei for pentru a obține valorile.
Utilizarea memoriei este mai mare, prin urmare, execuția codului este lentă atunci când lucrați la un set imens de date. Execuția codului este mai rapidă folosind xrange().

Folosind range()

Acest exemplu arată cum să imprimați valorile de la 0 la 9 utilizând range().

Valoarea utilizată în interval este 10, deci rezultatul este 0 1 2 3 4 5 6 7 8 9

Deoarece startul nu este dat, startul este considerat 0 și ultima valoare este dată până la 9. Ultima valoare este întotdeauna cu 1 mai mică decât valoarea dată, adică stop-1.

for i in range(10):
    print(i, end =" ")

ieșire:

0 1 2 3 4 5 6 7 8 9

Folosind start și stop în interval()

În cod, valoarea de pornire este 3, iar valoarea de oprire este 10. Aici indexul de pornire este 3, astfel încât succesiunea de numere va începe de la 3 până la valoarea de oprire. Ultima valoare din secvență va fi cu 1 mai mică decât valoarea de oprire 10-1 = 9.

for i in range(3, 10):
    print(i, end =" ")

ieșire:

3 4 5 6 7 8 9

Folosind start, stop și step

Valoarea de început este 3, deci secvența de numere va începe la 3. Valoarea de oprire este 10, deci secvența de numere se va opri la (10-1), adică 9. Pasul este 2, deci fiecare valoare din secvență va să fie incrementat cu 2. Dacă valoarea pasului nu este dată, valoarea pasului este implicit 1.

for i in range(3, 10, 2):
    print(i, end =" ")

ieșire:

3 5 7 9

Până acum, am văzut cum funcția range() oferă valoarea incrementată pentru valoarea stop dată. Să încercăm acum un exemplu pentru a obține valoarea redusă în intervalul dat.

Creșterea valorilor în interval folosind un pas pozitiv.

Pasul de parametru din range() poate fi folosit pentru a incrementa/decrementa valorile. În mod implicit, este o valoare pozitivă 1. Deci va oferi întotdeauna valori incrementate.

Valoarea pasului trebuie să fie pozitivă în cazul în care doriți să doriți valori incrementate ca ieșire.

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

ieșire:

1 6 11 16 21 26

Reverse Range: Decrementarea valorilor utilizând pasul negativ

Pasul de parametru cu valoare negativă în range() poate fi folosit pentru a obține valori decrementate. În exemplul de mai jos, valoarea pasului este negativă, astfel încât ieșirea va fi diminuată de la valoarea intervalului dată.

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

ieșire:

15 14 13 12 11 10 9 8 7 6

Valoarea de pornire este 15, valoarea de oprire este 5 și valoarea pasului este un număr negativ, adică -1. Cu intrările de mai sus, funcția range() va reduce valoarea de la 15 până când ajunge la valoarea stop, dar aici diferența este, ultima valoare va fi stop + 1.

Folosind numere flotante în Python gamă()

Să lucrăm acum la range() folosind numere în virgulă mobilă.

Exemplu:

for i in range(10.5):
    print(i, end =" ")

În exemplul de mai sus am folosit valoarea stop ca 10.5.

Ieșirea este:

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 dă o eroare deoarece funcția range() nu acceptă numere în virgulă mobilă pentru start, stop și pas.

Folosind for-loop cu Python gamă()

În acest exemplu, vom folosi o matrice de numere și, să vedem cum să folosim repetarea matricei din interiorul buclei for folosind range()

Exemplu:

arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase']

for i in range(len(arr_list)):
    print(arr_list[i], end =" ")

ieșire:

MysqlMongodb PostgreSQL Firebase

În exemplul de mai sus am folosit len(arr_list) ca valoare de oprire. Bucla for va itera până la valoarea stop, adică lungimea matricei și aceasta va fi 4, deoarece avem patru elemente în arr_list. Valoarea de pornire va fi 0 și pasul va fi 1. Deci, valorile vor începe de la 0 și se vor opri la 3, adică lungimea matricei -1, adică 4 -1 = 3.

Utilizarea Python range() ca o listă

În acest exemplu, vom vedea cum să utilizați rezultatul din interval ca o listă.

Exemplu:

print(list(range(10)))

ieșire:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Puteți vedea că rezultatul este un format de listă. Nu a fost necesar să facem bucla range() și folosind metoda list() am putut converti direct rezultatul din interval în format listă.

Utilizarea caracterelor din gama Python()

Până acum, am folosit numere întregi în python range(). De asemenea, am văzut că numerele în virgulă mobilă nu sunt acceptate în intervalul Python. Să încercăm să vedem rezultatul cu privire la ceea ce se întâmplă atunci când folosim caractere.

Exemplu:

for c in range ('z'):
        print(c, end =" ")

ieșire:

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

Se afișează o eroare care spune că un șir nu poate fi interpretat ca un întreg.

Pentru a obține lista de alfabete, puteți personaliza codul și obține rezultatul dorit, așa cum se arată mai jos:

Exemplu:

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

ieșire:

['a', 'b', 'c', 'd', 'e', 'f', 'g']

Cum să accesați elementele de gamă

Puteți utiliza o buclă for pentru a obține valorile din interval sau puteți utiliza indexul pentru a accesa elementele din range().

Folosind for-loop

Exemplu:

for i in range(6):
    print(i)

ieșire:

0
1
2
3
4
5

Folosind index

Indicele este utilizat cu interval pentru a obține valoarea disponibilă la acea poziție. Dacă valoarea intervalului este 5, pentru a obține valoarea de pornire, puteți utiliza intervalul (5)[0] și următorul interval de valori (5)[1] și așa mai departe.

Exemplu:

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)

ieșire:

The first element in range is =  0
The second element in range is =  1
The first element in range is =  4

Folosind list()

Această metodă va imprima toate elementele din gama (). Folosind list() va returna elementele din range() în format listă.

Exemplu:

print(list(range(10)))

ieșire:

 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Oferă ieșirea listei pentru intervalul dat.

Exemplu: obțineți numere pare folosind range()

Utilizarea range() va obține lista de numere pare din intervalul dat ca intrare. Parametrii pentru range() sunt, start este 2, stop este 20 și pasul este 2, deci valorile vor fi incrementate cu 2 și vor da numere pare până la stop-2.

Exemplu:

for i in range(2, 20, 2):
    print(i, end =" ")

ieșire:

2 4 6 8 10 12 14 16 18

Îmbinarea ieșirilor cu două game().

În acest exemplu se vor concatena 2 funcții range() cu ajutorul funcției itertools module chain().

Exemplu:

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=" ")

ieșire:

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

Folosind range() cu NumPy

Modulul NumPy are funcția arange() care funcționează și oferă rezultate similare precum range(). Arrange() preia aceiași parametri ca range().

Sintaxă:

arange(start, stop, step)

Pentru a lucra cu NumPy, urmați pașii de mai jos.

Etapa 1: Importă modulul NumPy

import numpy

În cazul în care în timpul execuției, apare o eroare care spune că modulul numpy nu a fost găsit, trebuie să instalați modulul așa cum se arată în pasul 2.

Etapa 2: Instalați NumPy

pip install numpy

Etapa 3: Exemplu de lucru pentru arange() folosind NumPy

import numpy as np 

for  i in np.arange(10):
   print(i, end =" ")        

ieșire:

0 1 2 3 4 5 6 7 8 9

Numere în virgulă mobilă folosind NumPy arange()

Nu este posibil să obțineți secvența în virgulă mobilă folosind range(), dar este posibil folosind NumPy arange().

Exemplu:

Intervalul pe care îl dorim este de la 0.5 la 1.5. Valoarea va fi crescută cu 0.2.

import numpy as np 

for  i in np.arange(0.5, 1.5, 0.2):
   print(i, end =" ")        

ieșire:

0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998

Ieșirea pe care o obținem este puțin ciudată, unele dintre numerele flotante sunt afișate cu 16 zecimale. Acest lucru se întâmplă din cauza complexității stocării numerelor zecimale flotante în format binar. De asemenea, puteți rotunji valorile dacă este necesar și să le limitați la zecimale de care aveți nevoie.

Rezumat

  • Python range() este o funcție încorporată disponibilă cu Python din Python(3.x) și oferă o secvență de numere bazată pe indexul de start și oprire dat. În cazul în care indicele de start nu este dat, indicele este considerat 0 și va crește valoarea până la indicele de oprire.
  • Python range() a fost introdus de la python versiunea 3, înainte de acel xrange() era funcția.
  • Range() oferă secvența de numere și returnează o listă de numere. Funcția xrange() oferă un obiect generator care trebuie buclat într-o buclă for pentru a obține valorile.
  • Pasul de parametru din range() poate fi folosit pentru a incrementa/decrementa valorile. În mod implicit, este o valoare pozitivă 1. Deci va oferi întotdeauna valori incrementate.
  • Python dă o eroare pentru numerele în virgulă mobilă, deoarece funcția range() acceptă numai valori întregi.
  • Valorile din range() pot fi accesate folosind for-loop, folosind index și list()
  • Modulul NumPy are funcția arange() care funcționează și oferă rezultate similare precum range(). Range() ia aceiași parametri ca range().
  • Este posibil să obțineți secvența în virgulă mobilă NumPy arange() care nu este acceptată folosind range().