Range() i xrange() són dues funcions que es poden utilitzar per repetir un cert nombre de vegades per bucles en Python. En Python 3 , no hi ha xrange, però la funció range es comporta com xrange a Python2. Si voleu escriure codi que s'executi tant a Python2 com a Python3, hauríeu d'utilitzar range(). Tots dos s'implementen de diferents maneres i tenen diferents característiques associades. Els punts de comparació són:
- Tipus de retorn
- Memòria
- Ús de l'operació
- Velocitat
Funció range() de Python
El Funció range() de Python retorna una seqüència de números, en un interval determinat. El seu ús més comú és iterar seqüències en una seqüència de nombres mitjançant bucles de Python.
Funció xrange() de Python
La funció xrange() a Python s'utilitza per generar una seqüència de números, similar a la funció Python range(). El xrange() de Python només s'utilitza a Python 2.x, mentre que la funció range() a Python s'utilitza a Python 3.x.
Tipus de retorn en rang () vs rang x ()
Això xrange() funció retorna el objecte generador que es pot utilitzar per mostrar números només fent un bucle. L'únic rang en particular es mostra sota demanda i, per tant, s'anomena avaluació mandrosa , mentre que a Python la funció range() retorna un objecte rang (un tipus d'iterable).
Python 3
# 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))> |
>
llista ordenar java
>
Sortida:
The return type of range() is : The return type of xrange() is :>
Velocitat de la funció xrange() i range().
La variable que emmagatzema el rang creat per range() pren més memòria en comparació amb la variable que emmagatzema l'interval mitjançant xrange(). La raó bàsica d'això és el tipus de retorn de range() és llista i xrange() és xrange() objecte.
Python 3
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))> |
substituir tot
>
>
Sortida:
The size allotted using range() is : 80064 The size allotted using xrange() is : 40>
Operacions Ús de la funció xrange() i range().
Un rang() retorna la llista, totes les operacions que llauna s'aplica a la llista es pot utilitzar en ella. D'altra banda, com xrange() retorna l'objecte xrange, operacions associades a la llista no pot aplicar-los, per tant, un desavantatge.
Python 3
# 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>])> |
>
>
Error:
xd xd significat
Traceback (most recent call last): File '1f2d94c59aea6aed795b05a19e44474d.py', line 18, in print (x[2:5]) TypeError: sequence index must be integer, not 'slice'>
Sortida:
The list after slicing using range is : [3, 4, 5] The list after slicing using xrange is :>
Diferència entre range() i xrange() a Python
A causa del fet que xrange() només avalua l'objecte generador que conté només els valors requerits per l'avaluació mandrosa, per tant és més ràpid en implementació que range().
Punts importants:
- Si voleu escriure codi que s'executi tant a Python 2 com a Python 3, utilitzeu range() ja que la funció xrange està obsoleta a Python 3.
- range() és més ràpid si itera sobre la mateixa seqüència diverses vegades.
- xrange() ha de reconstruir l'objecte enter cada vegada, però range() tindrà objectes enters reals. (No obstant això, sempre tindrà un rendiment pitjor en termes de memòria)
| rang () | xrange() |
|---|---|
| Retorna una llista de nombres enters. | Retorna un objecte generador. |
| La velocitat d'execució és més lenta | La velocitat d'execució és més ràpida. |
| Pren més memòria, ja que manté tota la llista d'elements a la memòria. | Pren menys memòria, ja que només conserva un element alhora a la memòria. |
| Totes les operacions aritmètiques es poden realitzar ja que retorna una llista. | Aquestes operacions no es poden realitzar a xrange(). |
| A Python 3, xrange() no és compatible. | A Python 2, xrange() s'utilitza per iterar en bucles for. |