Sono nel tratto finale di un progetto su cui ho lavorato. Tutto funziona senza intoppi ma ho un collo di bottiglia che ho problemi a lavorare in giro.Python: rimuovere molti elementi da un elenco
Ho una lista di tuple. L'elenco ha una durata che va da 40.000 a 1.000.000 di record. Ora ho un dizionario in cui ognuno (valore, chiave) è una tupla nella lista.
Quindi, potrei avere
myList = [(20000, 11), (16000, 4), (14000, 9)...]
myDict = {11:20000, 9:14000, ...}
Voglio rimuovere ciascuno (v, k) tuple dalla lista.
Attualmente sto facendo:
for k, v in myDict.iteritems():
myList.remove((v, k))
Rimozione 838 tuple dalla lista che contiene 20.000 tuple impiega da 3 - 4 secondi. Molto probabilmente rimuoverò più di 10.000 tuple da una lista di 1.000.000, quindi ho bisogno che questo sia più veloce.
C'è un modo migliore per farlo?
Posso fornire il codice utilizzato per testare, oltre ai dati in salamoia dall'applicazione effettiva se necessario.
Wow. Questo ha portato il mio tempo di prova da 3,2 secondi a 0,025 ... Penso che potremmo avere un vincitore - almeno fino a quando Alex Martelli non suonerà :) – sberry
Potrei vivere con il fatto di essere secondo a lui :-) – balpha
@ sberry2A: Se sei misurando 25 ms, il tempo reale del muro potrebbe anche essere più piccolo di quello - potrebbe essere la risoluzione del timer del tuo sistema operativo "arrotondare" fino a 25 ms. Prova ad eseguire la media di 1000 esecuzioni, ad esempio. –