remove functions comprehension python python-2.7 iteration list-comprehension

python - functions - rango(len(lista)) o enumerar(lista)?



python list remove (4)

Algunas ejecuciones de tiempo rápidas parecen dar a la segunda opción que usa range() una ligera ventaja sobre enumerate() :

timeit a = [f(n) for n, _ in enumerate(mlist)] 10000 loops, best of 3: 118 us per loop timeit a = [f(n) for n in range(len(mlist))] 10000 loops, best of 3: 102 us per loop

y solo por diversión usando xrange() (Python v2.7.2)

timeit a = [f(n) for n in xrange(len(mlist))] 10000 loops, best of 3: 99 us per loop

xrange() código legible primero , luego usar xrange() si está disponible (es decir, Pre-Python v 3.x), seguido de range() y enumerate() .

Posible duplicado:
Solo se necesita índice: ¿enumerar o (x) rango?

¿Cuál de estos sería considerado mejor / más claro / más rápido / más ''Pythonic''? No me importa el contenido de la lista L , solo el tiempo que dura.

a = [f(n) for n, _ in enumerate(L)]

o

a = [f(n) for n in range(len(L))]

Si hay alguna diferencia, la función f hace uso de len(list) .


La solución de la gama (x) es más rápida, ya que tiene menos gastos generales, así que lo usaría.

En Python 2.x, usa xrange lugar de range , porque xrange usa menos memoria, porque no crea una lista temporal. En Python 3.x, solo hay range , que es la versión con menos memoria.


Suponiendo que está usando Python 2.x, si usa len() , debería usar xrange() ya que evitará crear una lista de los números en el rango.

Y en este caso, len() por len() porque está utilizando los índices, no los elementos de la lista.


Yo diría que, como no está utilizando el atributo "_" de la función enumarate, use el rango porque es más legible de esa manera.