Otra posible solución sería utilizar numpy
que sería muy eficiente, para grandes listas tal vez incluso más eficiente que una lista por comprensión o un bucle.
import numpy as np
a = np.arange(5.0) # a --> array([0., 1., 2., 3., 4.])
# numpy operates on arrays element by element
#
b =3.*a # b --> array([0., 3., 6., 9., 12.])
Esta es una operación bastante simple pero puede ser más complejo usando una matriz como simplemente un argumento en una fórmula. Para matrices grandes, esto puede ser mucho más rápido que una lista de comprensión y hace que el código sea más limpio y fácil de leer (no es necesario crear una función para mapear en una lista de comprensión). También puede utilizar la indexación y rebanar a adaptar lo que quiere hacer:
Si desea tener acceso a las posiciones de índice reales utilizar ndenumerate
# b is as above
for i, x in np.ndenumerate(b):
print i, x
La salida de este bucle es:
(0,) 0.0
(1,) 3.0
(2,) 6.0
(3,) 9.0
(4,) 12.0
NOTA: el índice devuelto como una tupla por numpy para manejar dimensiones adicionales. Aquí solo tenemos una dimensión única, por lo que tendría que descomprimir la tupla para obtener el índice del elemento.
busque el foro antes de publicar. Esto ha sido respondido un millón de veces – sulabh
posible duplicado de [Iterar una lista con índices en python] (http: // stackoverflow.com/questions/126524/iterate-a-list-with-indexes-in-python) – jamylak
@sulabh: No encuentro el duplicado exacto de esta pregunta. Por favor, vincula lo mismo. La pregunta que estoy haciendo aquí es una comparación entre dos formas diferentes de iterar una lista, y una sugerencia de cuál es mejor. – mankand007