Ho un deque in Python che sto andando a finire. A volte la deque cambia mentre sto interagendo, producendo uno RuntimeError: deque mutated during iteration
.Aggiungi a un deque che viene iterato in Python?
Se questa fosse una lista di Python invece di una deque, vorrei semplicemente scorrere su una copia dell'elenco (tramite una sezione come my_list[:]
, ma poiché le operazioni di slice non possono essere utilizzate su deques, mi chiedo quale sia la più pitone modo di gestire questo è?
La mia soluzione è di importare il modulo di copia e quindi iterare su una copia, come for item in copy(my_deque):
che va bene, ma dal momento che ho cercato in alto e in basso per questo argomento ho pensato di postare qui per chiedere ?
Perché stai modificando il 'deque' mentre lo iterating? Puoi mostrare un po 'di codice? – thefourtheye
Cosa ti aspetti che succeda all'iterazione in cui sei nel mezzo rispetto a quali modifiche vengono apportate alla deque? – martineau
Per quanto riguarda il motivo per cui lo sto alterando, questo deque è una coda utilizzata per contenere una serie di modalità attive in un'applicazione software per flipper e mentre le modalità sono aggiornate è possibile che altre modalità vengano avviate e aggiunte al deque. Sto bene con non chiamare nulla che è entrato durante l'iterazione, o chiamare tutto ciò che è stato rimosso durante l'iterazione. In realtà voglio ripetere il deque come era quando è iniziata l'iterazione, quindi la copia. –