Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

enumerate al posto di range

Shangry_ (9930 points)
7 25 76
in HW2 by (9.9k points)
utilizzare enumerate al posto di range, potrebbe ridurre il tempo di esecuzione e quindi migliorare l'efficenza del programma?
255 views

4 Answers

dragomirdavid (4470 points)
1 2 17
by (4.5k points)

Enumerate è leggermente più lento in alcuni casi e più veloce in altri quando vuoi accedere ripetutamente agli indici dei vari elementi da iterare, ti consiglio la lettura di questi tre articoli:


https://stackoverflow.com/questions/4852944/what-is-faster-for-loop-using-enumerate-or-for-loop-using-xrange-in-python

https://realpython.com/lessons/range-vs-enumerate/

https://themeptation.medium.com/why-use-enumerate-instead-of-range-in-your-pythons-loops-d33bfd9c7531

anon3 (10560 points)
20 66 138
by (10.6k points)
Solitamente enumerate() viene utilizzato per i generatori, dato che con essi risulta molto rapido ed efficiente.

Non saprei dirti se tra i due, nel caso di un loop generico, convenga fare range(len(...)), nel caso puoi creare un file di prova e importare il modulo timeit con "import timeit" e fare qualche test.
SyncroIT (8690 points)
11 30 98
by (8.7k points)
Se vuoi iterare una lista enumerate è sempre più veloce (e comodo!) di range.
Range è utile quando non si vuole iterare gli elementi di una lista.
aa91 (3450 points)
6 14 46
by (3.5k points)
Da alcune ricerche che avevo fatto il precedenza ,ma che non ho ancora testato con grandi quantità di dati, il ciclo più veloce è il While.

Enumerate in ogni caso è utile quando, oltre a iterare, hai necessità di fare operazioni o confronti anche in funzione dell'indice, potendo accedervi in modo comodo e rapido.

Per valutare i tempi, genera una grande mole di dati e iteraci sopra effettuando delle operazioni, prima con While, poi con For e successivamente con Enumerate, valuta poi i tempi importanto la libreria time (Import time) e inserendo prima della funzione %time  nomeDellaFunzione, vedrai che nella console verranno mostrati i tempi