Do you need any help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2021-22 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2021-22 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

VIDEOLEZIONI DEL CORSO DI FONDAMENTI DI PROGRAMMAZIONE AA20-21

PROGRAMMING COURSE VIDEOCONFERENCES AY20-21

Domanda sullo scorrimento delle liste

N
Nhix (360 points)
4 6 7
asked Nov 1, 2019 in Programmare in Python by Nhix (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?
861 views

6 Answers

E
Edward (25950 points)
2 4 172
answered Nov 1, 2019 by Edward (25,950 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
answered Nov 1, 2019 by EdoardoEnsoli (420 points)
edited Nov 1, 2019 by EdoardoEnsoli
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)
15 38 131
answered Nov 1, 2019 by a.pietroluongo (11,250 points)
edited Nov 1, 2019 by a.pietroluongo
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)
7 15 118
answered Nov 2, 2019 by plm (18,850 points)
con il range che hai indicato tu, scorri gli elementi, mentre con il len(lista) scorri con l'indice
Auron (15880 points)
32 126 194
answered Nov 2, 2019 by Auron (15,880 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)
6 11 91
answered Nov 2, 2019 by Tommaso Sgroi (12,990 points)
Puoi usare la funzione range(lista), così potrai usare direttamente gli indici, attento però a non andare fuori dal range della lista.