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

Do you need help?

Notice Board

Eliminare elemento lista in un ciclo

S
Simone99_ (1180 points)
22 50 60
in Es1 by (1.2k points)
closed by
salve a tutti,  ho un problema con un mio programma, in pratica non riesco ad eliminare l'elemento di una lista se una condizione si verificata
786 views
closed with the note: consegna passata

2 Answers

giorgio.belli (10140 points)
23 74 98
by (10.1k points)
Simone ti rispondo anche se sul regolamento è specificato che non si può postare alcuna riga di codice ma soltanto pseudo-codice.

Comunque la funzione Del non puo essere usata in quel modo ma devi specificare il nome della lista ls[indice] cosi che l'interprete sappia di dover eliminare l'elemento in posizione indice nella lisa ls.

Giusto per tua conoscenza potresti andare a vedere anche la funzione ls.remove() con cui puoi rimuovere un elemento (digita sulla shell help(list.remove)) per avere piu informazioni)
Spero di essere stato di aiuto
S
Simone99_ (1180 points)
22 50 60
by (1.2k points)
innanzitutto mi scuso e ti ringrazio per la risposta, per quanto riguarda l'indice , ci ho pensato anche io, ma quale indice devo utilizzare ? non posso scrivere "del ls[x]" perchè andrebbe out of range, cosi come non posso utilizzare "i" :/
giorgio.belli (10140 points)
23 74 98
by (10.1k points)
A questo proposito c'è la funzione "enumerate" che fa proprio al caso tuo e che potresti usare nel primo ciclo cosi da ottenere l'elemento x e la sua posizione nella lista; avendo la posizione avrai anche l'indice dell'elemento da eliminare
S
Simone99_ (1180 points)
22 50 60
by (1.2k points)
il problema è che con enumerate non si può fare il reverse, almeno questo è quello che mi dice phyton
LeonardoEmili (35740 points)
13 65 155
by (35.7k points)

Ciao Simone99, 

ti consiglio di editare immediatamente la riposta in quanto non è permesso postare il codice. Segui quanto detto da giorgio.belli e ti consiglio di vedere bene come funziona del ls[index] e ls.remove(item).

Buona giornata.

Leonardo Emili

S
Simone99_ (1180 points)
22 50 60
by (1.2k points)
ho modificato scrivendo ls.remove(x), ma ora mi da la lista totalmente vuota :(
LeonardoEmili (35740 points)
13 65 155
by (35.7k points)
Devi utilizzare il metodo ls.remove(item) solo quando il caso lo richiede. Altrimenti se iteri l'operazione per ogni item di ls questa ti sarà restituita vuota! p.s. aggiungi però qualche info in pseudocodice se vuoi nella tua domanda così da aiutarti meglio!
S
Simone99_ (1180 points)
22 50 60
by (1.2k points)
si infatti io inserisco ls.remove(item) solo all'interno della condizione, è per questo che sto impazzendo e non riesco a capire
LeonardoEmili (35740 points)
13 65 155
by (35.7k points)
Hai provato a posizionare dei print() all'interno del tuo codice verificando che la lista non sia già vuota?
S
Simone99_ (1180 points)
22 50 60
by (1.2k points)
si , ho provato anche ad isolare quella funzioncina che mi trova i divisori, ma nulla, c'è un problema nel contesto generale  che non riesco a capire
LeonardoEmili (35740 points)
13 65 155
by (35.7k points)
In questo caso la miglior cosa è dividere il codice in funzioni logiche, devi riuscire a capire bene come funziona il programma. Quindi il mio consiglio è: dimenticati dell'intricatezza e del tempo di esecuzione, scrivi il codice come risulta a te più leggibile e "meglio diviso" e trova il punto esatto in cui il comportamento strano si verifica! Poi potrai divertirti e tornare a "ridisegnare" il tuo codice :D