Range() și xrange() sunt două funcții care ar putea fi folosite pentru a repeta un anumit număr de ori în pentru bucle în Python. În Python3 , nu există xrange, dar funcția range se comportă ca xrange în Python2. Dacă doriți să scrieți cod care va rula atât pe Python2, cât și pe Python3, ar trebui să utilizați range(). Ambele sunt implementate în moduri diferite și au caracteristici diferite asociate acestora. Punctele de comparație sunt:
- Tip de returnare
- Memorie
- Utilizarea operațiunii
- Viteză
Funcția Python range().
The Funcția Python range(). returnează o secvență de numere, într-un interval dat. Cea mai obișnuită utilizare a acestuia este de a repeta secvențe pe o secvență de numere folosind bucle Python.
Funcția Python xrange().
Funcția xrange() din Python este folosită pentru a genera o secvență de numere, similară cu funcția Python range(). Python xrange() este folosit numai în Python 2.x, în timp ce funcția range() în Python este folosită în Python 3.x.
Tip de returnare în interval() vs xrange()
Acest xrange() funcția returnează obiect generator care poate fi folosit pentru a afișa numere doar prin buclă. Singurul interval special este afișat la cerere și, prin urmare, este apelat evaluare leneșă , în timp ce, în Python, funcția range() returnează un obiect interval (un tip de iterabil).
Python3
# initializing a with range()> a>=> range>(>1>,>10000>)> # initializing a with xrange()> x>=> xrange>(>1>,>10000>)> # testing the type of a> print>(>'The return type of range() is : '>)> print>(>type>(a))> # testing the type of x> print>(>'The return type of xrange() is : '>)> print>(>type>(x))> |
>
înlocuiți șirul în java
>
Ieșire:
The return type of range() is : The return type of xrange() is :>
Viteza funcției xrange() și range().
Variabila care stochează gamă creat de range() ia mai multă memorie în comparație cu variabila care stochează intervalul folosind xrange(). Motivul de bază pentru aceasta este tipul de returnare range() este listă și xrange() este obiect xrange().
Python3
import> sys> # initializing a with range()> a>=> range>(>1>,>10000>)> # initializing a with xrange()> x>=> xrange>(>1>,>10000>)> # testing the size of a> # range() takes more memory> print> (>'The size allotted using range() is : '>)> print> (sys.getsizeof(a))> # testing the size of x> # xrange() takes less memory> print> (>'The size allotted using xrange() is : '>)> print> (sys.getsizeof(x))> |
matrice de latex
>
>
Ieșire:
The size allotted using range() is : 80064 The size allotted using xrange() is : 40>
Operații Utilizarea funcției xrange() și range().
Un range() returnează lista, toate operațiunile care poate sa fi aplicat pe listă poate fi folosit pe ea. Pe de altă parte, deoarece xrange() returnează obiectul xrange, operațiunile asociate listei nu poti să fie aplicate acestora, deci un dezavantaj.
Python3
# initializing a with range()> a>=> range>(>1>,>6>)> # initializing a with xrange()> x>=> xrange>(>1>,>6>)> # testing usage of slice operation on range()> # prints without error> print> (>'The list after slicing using range is : '>)> print> (a[>2>:>5>])> # testing usage of slice operation on xrange()> # raises error> print> (>'The list after slicing using xrange is : '>)> print> (x[>2>:>5>])> |
>
>
Eroare:
Descărcați autocad 2019 engleză mediafire
Traceback (most recent call last): File '1f2d94c59aea6aed795b05a19e44474d.py', line 18, in print (x[2:5]) TypeError: sequence index must be integer, not 'slice'>
Ieșire:
The list after slicing using range is : [3, 4, 5] The list after slicing using xrange is :>
Diferența dintre range() și xrange() în Python
Din cauza faptului că xrange() evaluează numai obiectul generator care conține doar valorile cerute de evaluarea leneșă, prin urmare este Mai repede în implementare decât range().
Puncte importante:
- Dacă doriți să scrieți cod care va rula atât pe Python 2, cât și pe Python 3, utilizați range() deoarece funcția xrange este depreciată în Python 3.
- range() este mai rapid dacă se repetă pe aceeași secvență de mai multe ori.
- xrange() trebuie să reconstruiască obiectul întreg de fiecare dată, dar range() va avea obiecte întregi reale. (Totuși, va funcționa întotdeauna mai rău din punct de vedere al memoriei)
| gamă() | xrange() |
|---|---|
| Returnează o listă de numere întregi. | Returnează un obiect generator. |
| Viteza de execuție este mai mică | Viteza de execuție este mai rapidă. |
| Ocupă mai multă memorie, deoarece păstrează întreaga listă de elemente în memorie. | Ocupă mai puțină memorie deoarece păstrează în memorie doar un element odată. |
| Toate operațiile aritmetice pot fi efectuate deoarece returnează o listă. | Astfel de operațiuni nu pot fi efectuate pe xrange(). |
| În python 3, xrange() nu este acceptat. | În python 2, xrange() este folosit pentru a itera în bucle for. |