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.