Il mio problema è semplice: ho una lunga lista di elementi che voglio scorrere e controllare ogni elemento in base a una condizione. A seconda dell'esito della condizione, desidero eliminare l'elemento corrente dell'elenco e continuare a ripetere come al solito.Rimuovi elementi da un elenco durante l'iterazione senza utilizzare memoria aggiuntiva in Python
Ho letto alcuni altri thread su questo argomento. Sono state proposte due soluzioni. O fai un dizionario fuori dalla lista (il che implica fare una copia di tutti i dati che stanno già riempiendo tutta la RAM nel mio caso). O esegui la lista al contrario (che interrompe il concetto dell'algoritmo che voglio implementare).
Esiste un modo migliore o più elegante di farlo?
def walk_list(list_of_g):
g_index = 0
while g_index < len(list_of_g):
g_current = list_of_g[g_index]
if subtle_condition(g_current):
list_of_g.pop(g_index)
else:
g_index = g_index + 1
Duplicato di tutti questi: http://stackoverflow.com/search?q=%5Bpython%5D+list+remove. In particolare http://stackoverflow.com/questions/1207406/remove-items-from-a-list-while-iterating-in-python –
Sì, ho letto attentamente l'altro thread a cui hai collegato prima di pubblicare la mia domanda. Nessuna delle risposte proposte nell'altra discussione risponde alla mia preoccupazione. Questo perché il mio problema è diverso nel senso che è esclusa la copia dell'elenco e lo si attraversa all'indietro. – xApple