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.