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

Do you need help?

Domanda sullo scorrimento delle liste

N
Nhix (360 points)
5 6 7
in Programmare in Python by (360 points)
Buongiorno a tutti, mi chiedevo se nello scorrimento delle liste del tipo 'for elemento in lista', ci fosse un modo per accedere all'elemento successivo\precedente a quello in questione

es: sono nel ciclo ed elemento vale lista[0], c'è un modo per controllare lista[1]? o devo per forza usare un while?
1.3k views

6 Answers

E
Edward (25950 points)
3 4 172
by (26.0k points)

Puoi usare for i in range(len(lista))

E scorrere la lista con gli indici.
L'elemento successivo sarà i+1, quello precedente i-1.
Devi fare attenzione a non andare out of range però.

Oppure puoi usare enumerate(), è la stessa cosa

E
EdoardoEnsoli (420 points)
0 0 2
by (420 points)
edited by
All'interno del ciclo potresti inserire una variabile locale che ha come valore l'indice dell'elemento in questione, nel tuo esempio 0 (puoi trovarti l'indice di un valore all'interno di una lista con index() ) e addizionargli ad esempio 1, successivamente assegni ad un'altra variabile locale il valore assegnato a quell'indice con lista[indice]. Potrebbe non essere la soluzione più ingegnosa o rapida ma nel mio caso ha funzionato
a
a.pietroluongo (11250 points)
20 39 131
by (11.3k points)
edited by
for i in range(len(lista)) l'elemento  in posizione i sarà lista[i] , il successivo lista[i+1], il precedente   lista[i-1]

Nota che quando i == 0  lista[i] non ha il precedente  e quando i == len(lista) -1 non ha il successivo.
plm (18850 points)
13 15 118
by (18.9k points)
con il range che hai indicato tu, scorri gli elementi, mentre con il len(lista) scorri con l'indice
Auron (15880 points)
50 126 194
by (15.9k points)

Mi permetto di segnalarti anche la funzione enumerate(iterabile) che permette di scorrere una struttura iterabile, portando di pari passo un indice... La sintassi nel caso di una lista, in un ciclo For, è:

For i, j in enumerate(lista):
     corpo del for

In questo modo, ad ogni iterazione del For, "j"  sarà l'elemento i-esimo della lista, e "i" sarà appunto l'indice di quell'elemento.

In un caso pratico, per lista=["a", "b", "c"] si avrà:

Prima iterazione        -->  i==0, j=="a"
Seconda iterazione   -->  i==1, j=="b"
Terza iterazione        -->  i==2, j=="c"

Può risultare molto comodo in alcuni casi :D
 

Tommaso Sgroi (12990 points)
10 11 91
by (13.0k points)
Puoi usare la funzione range(lista), così potrai usare direttamente gli indici, attento però a non andare fuori dal range della lista.