Un'altra possibile soluzione potrebbe essere quella di utilizzare numpy
che sarebbe molto efficiente, per grandi liste forse anche più efficiente di una lista di comprensione o di un ciclo for.
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.])
Questo è un piuttosto semplice operazione, ma si può ottenere più complessa usando una matrice semplicemente come un argomento in una formula. Per i grandi array questo può essere molto più veloce di una lista di comprensione e rende il codice più pulito e più facile da leggere (non è necessario creare una funzione per mappare in una lista di comprensione). È inoltre possibile utilizzare l'indicizzazione e affettamento di adattare ciò che si vuole fare:
Se si desidera avere accesso alle posizioni di indice effettivi utilizzare ndenumerate
# b is as above
for i, x in np.ndenumerate(b):
print i, x
L'uscita di questo ciclo for è:
(0,) 0.0
(1,) 3.0
(2,) 6.0
(3,) 9.0
(4,) 12.0
NOTA: l'indice restituito come una tupla numpy per gestire ulteriori dimensioni. Qui abbiamo solo una singola dimensione in modo da dover decomprimere la tupla per ottenere l'indice dell'elemento.
fonte
2012-06-07 12:57:56
cerca nel forum prima di postare. A questo è stato risposto un milione di volte il possibile duplicazione di [Iterate un elenco con indici in python] (http: // stackoverflow, – sulabh
).it/questions/126524/iterate-a-list-con-indexes-in-python) – jamylak
@sulabh: Non riesco a trovare il duplicato esatto di questa domanda. Si prega di collegare lo stesso. La domanda che sto ponendo è un confronto tra due diversi modi di iterare una lista, e un suggerimento è meglio. – mankand007