ciclo for in lista

d
davidebelcastro (1160 points)
5 32 41
asked Dec 6, 2020 in Programmare in Python by davidebelcastro (1,160 points)
qualcuno saprebbe dirmi come si fa un ciclo che analizza una lista al contrario, partendo dalla fine e arriva all'inizio?
218 views

5 Answers

f
fabrizio.alba (1150 points)
4 11 20
answered Dec 6, 2020 by fabrizio.alba (1,150 points)
Puoi usare il metodo reverse() delle liste...
e
eduard_lisnic (850 points)
0 2 11
answered Dec 6, 2020 by eduard_lisnic (850 points)
Oltre al metodo reverse() che ti ha consigliato il collega puoi usare le slices indicando [::-1] alla fine della lista e ciclare su quello.
g
giacomo_venturini (6680 points)
2 5 39
answered Dec 6, 2020 by giacomo_venturini (6,680 points)
Puoi usare range(len(lista)-1,-1, -1) questo partirà dall'ultimo elemento della lista e arriverà a 0 a passi di -1
1
1937764 (3520 points)
6 14 42
answered Dec 7, 2020 by 1937764 (3,520 points)

Puoi usare le slice, quindi lista[::-1]

Utile in quei casi dove ad esempio devi eliminare elementi mentre scorri la lista, oltre ovviamente a una richiesta esplicita di scorrerla al contrario

S
Silktrader (2550 points)
1 6 16
answered Dec 7, 2020 by Silktrader (2,550 points)
edited Dec 7, 2020 by Silktrader

Ci sono tre casi:

  1. se ti serve il nuovo ordine una sola volta, non vuoi mutare la lista originale e vuoi ottenere tutti gli elementi al contrario usi la slice notation sequence[::-1] — effettua nuova copia di tutta la lista
  2. se pensi di riusare la lista con elementi al contrario più di una volta, non ti serve la lista originale usa il metodo reverse() — riordina la lista "in-place" senza creare nuove copie
  3. se ti servono solo alcuni risultati della lista all'incontrario, possibilmente senza percorrerla tutta, allora preferisci reversed() — che ti permette di valutare solo gli elementi che ti interessano, "lazily", fino a quando vuoi tu