range() y xrange() son dos funciones que podrían usarse para iterar un cierto número de veces en para bucles en Python. En Python3 , no existe xrange, pero la función range se comporta como xrange en Python2. Si desea escribir código que se ejecute tanto en Python2 como en Python3, debe usar range(). Ambos se implementan de diferentes maneras y tienen diferentes características asociadas. Los puntos de comparación son:
- Tipo de devolución
- Memoria
- Uso de operación
- Velocidad
Función rango de Python()
El Función rango de Python() devuelve una secuencia de números, en un rango determinado. El uso más común es iterar secuencias en una secuencia de números usando bucles de Python.
Función xrange() de Python
La función xrange() en Python se utiliza para generar una secuencia de números, similar a la función range() de Python. Python xrange() se usa solo en Python 2.x, mientras que la función range() en Python se usa en Python 3.x.
Tipo de retorno en range() vs xrange()
Este rango x() la función devuelve el objeto generador que se puede utilizar para mostrar números sólo mediante bucle. El único rango particular se muestra a pedido y por eso se llama evaluación perezosa , mientras que en Python la función range() devuelve un objeto de rango (un tipo de iterable).
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))> |
>
parseint java
>
Producción:
The return type of range() is : The return type of xrange() is :>
Velocidad de la función xrange() y range()
La variable que almacena el rango creado por rango() toma más memoria en comparación con la variable que almacena el rango usando xrange(). La razón básica de esto es que el tipo de retorno de range() es lista y xrange() es objeto 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))> |
cómo imprimir java
>
>
Producción:
The size allotted using range() is : 80064 The size allotted using xrange() is : 40>
Operaciones Uso de la función xrange() y range()
Un range() devuelve la lista, todas las operaciones que poder se puede aplicar en la lista se puede utilizar en ella. Por otro lado, como xrange() devuelve el objeto xrange, las operaciones asociadas con la lista no puedo aplicarles, por lo tanto una desventaja.
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>])> |
>
>
Error:
carácter a cadena
Traceback (most recent call last): File '1f2d94c59aea6aed795b05a19e44474d.py', line 18, in print (x[2:5]) TypeError: sequence index must be integer, not 'slice'>
Producción:
The list after slicing using range is : [3, 4, 5] The list after slicing using xrange is :>
Diferencia entre range() y xrange() en Python
Debido al hecho de que xrange() evalúa solo el objeto generador que contiene solo los valores requeridos por la evaluación diferida, por lo tanto es más rápido en implementación que range().
Puntos importantes:
- Si desea escribir código que se ejecute tanto en Python 2 como en Python 3, use range() ya que la función xrange está obsoleta en Python 3.
- range() es más rápido si se itera sobre la misma secuencia varias veces.
- xrange() tiene que reconstruir el objeto entero cada vez, pero range() tendrá objetos enteros reales. (Sin embargo, siempre funcionará peor en términos de memoria)
| rango() | rango x() |
|---|---|
| Devuelve una lista de números enteros. | Devuelve un objeto generador. |
| La velocidad de ejecución es más lenta. | La velocidad de ejecución es más rápida. |
| Requiere más memoria ya que mantiene la lista completa de elementos en la memoria. | Requiere menos memoria ya que mantiene solo un elemento a la vez en la memoria. |
| Todas las operaciones aritméticas se pueden realizar ya que devuelve una lista. | Estas operaciones no se pueden realizar en xrange(). |
| En Python 3, xrange() no es compatible. | En Python 2, xrange() se usa para iterar en bucles for. |