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

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 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 2023-24 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.

lista circolare

m
matia plateroti (1600 points)
1 12 23
in Info sul corso e sugli esami by (1.6k points)
Scusate sapete come posso realizzare una lista circolare?ossia iterabile passando dall ultimo elemento al primo?

grazie mille!
561 views
closed

2 Answers

Best answer
a
alex_err (5800 points)
1 3 32
by (5.8k points)
selected by
Se lavori con gli indici e devi solo scorrerla puoi usare un while e l'incremento dell'indice lo fai in questo modo:

while cond:
     i = (i +1) % len(lista)
m
matia plateroti (1600 points)
1 12 23
by (1.6k points)
me lo approfondiresti meglio non ho ben capito,%len di lista andrebbe ad iterare sulla lunghezza per indici della lista?
a
alex_err (5800 points)
1 3 32
by (5.8k points)

L'operatore resto in questo caso serve ad azzerare il contatore. Quando i+1 avrà lo stesso valore di len(lista) la variabile i varrà di nuovo 0 e questo ti permetterà di ritornare al primo elemento della lista.

Se la mia lista è lst = [1,2,4] e len(lst) = 3.
Se usi un indice i, funziona in questo modo:

stato attuale: stato futuro
i = 0            i = (0+1) % 3 = 1 % 3 = 1
i = 1            i = (1+1) % 3 = 2 % 3 = 2
i = 2            i = (2+1) % 3 = 3 % 3 = 0 -> ricomincio dallo stato 0

m
matia plateroti (1600 points)
1 12 23
by (1.6k points)
grazie mille alex!
PieMH (2300 points)
3 12 31
by (2.3k points)
La cosa più semplice per renderla circolare è usare indici di posizione negativi.
Se invece stai pensando a aggiungere o togliere elementi dalla fine all'inizio e viceversa
usa append, insert e pop.
m
matia plateroti (1600 points)
1 12 23
by (1.6k points)
si,e in particolare togliere via via  elementi basandosi su un conteggio di posizioni (si tratta homework 1 bis primo esercizio in particolare)che,una volta arrivata alla fine della lista ricomincia daccapo,usavo pop ma va ovviamente fuori range ad un certo punto..