Ich bin in der letzten Phase eines Projekts, an dem ich gearbeitet habe. Alles läuft reibungslos, aber ich habe einen Flaschenhals, mit dem ich Probleme habe.Python: Entfernen Sie viele Elemente aus einer Liste
Ich habe eine Liste von Tupeln. Die Liste reicht von etwa 40.000 bis 1.000.000 Datensätzen. Jetzt habe ich ein Wörterbuch, wo jeder (Wert, Schlüssel) ein Tupel in der Liste ist.
So könnte ich habe
myList = [(20000, 11), (16000, 4), (14000, 9)...]
myDict = {11:20000, 9:14000, ...}
Ich mag jeden (v, k) Tupel aus der Liste entfernen.
Derzeit mache ich:
for k, v in myDict.iteritems():
myList.remove((v, k))
Entfernen 838 Tupel aus der Liste 20.000 Tupel enthält, überall dauert 3 bis 4 Sekunden. Ich werde wahrscheinlich mehr als 10.000 Tupel aus einer Liste von 1.000.000 entfernen, also brauche ich das schneller.
Gibt es einen besseren Weg, dies zu tun?
Ich kann Code zum Testen, sowie gebeizte Daten aus der tatsächlichen Anwendung bei Bedarf bereitstellen.
Wow. Dies brachte meine Testzeit von 3,2 Sekunden auf 0,025 ... Ich denke, wir könnten einen Gewinner haben - zumindest bis Alex Martelli in :) – sberry
Ich könnte damit leben, neben ihm zu sein :-) – balpha
@ sberry2A: Wenn du bist Wenn Sie 25ms messen, könnte die tatsächliche Wandzeit sogar kleiner sein - es könnte die Timer-Auflösung Ihres Betriebssystems sein, die es auf 25ms "rundet". Versuchen Sie zum Beispiel, den Durchschnitt von 1000 Läufen zu nehmen. –