Saltar al contenido

¿Cuál es la diferencia entre las funciones range y xrange en Python 2.X?

Solución:

En Python 2.x:

  • range crea una lista, así que si lo hace range(1, 10000000) crea una lista en la memoria con 9999999 elementos.

  • xrange es un objeto de secuencia que se evalúa de forma perezosa.

En Python 3:

  • range hace el equivalente de Python 2 xrange. Para obtener la lista, debe usar explícitamente list(range(...)).
  • xrange ya no existe.

range crea una lista, así que si lo haces range(1, 10000000) crea una lista en la memoria con 9999999 elementos.

xrange es un generador, entonces es un objeto de secuencia es un que evalúa perezosamente.

Esto es cierto, pero en Python 3, range() será implementado por Python 2 xrange(). Si realmente necesita generar la lista, deberá hacer lo siguiente:

list(range(1,100))

Recuerde, use el timeit módulo para probar cuál de los pequeños fragmentos de código es más rápido.

$ python -m timeit 'for i in range(1000000):' ' pass'
10 loops, best of 3: 90.5 msec per loop
$ python -m timeit 'for i in xrange(1000000):' ' pass'
10 loops, best of 3: 51.1 msec per loop

Personalmente, siempre uso range(), a menos que estuviera tratando con De Verdad listas enormes: como puede ver, en términos de tiempo, para una lista de un millón de entradas, la sobrecarga adicional es de solo 0.04 segundos. Y como señala Corey, en Python 3.0 xrange() se irá y range() le dará un buen comportamiento de iterador de todos modos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *