Schnellster Weg zur Vereinigung von Listen - Python

8

Es gibt einen C ++ Vergleich, um die Vereinigung von Listen aus Listen von Listen zu erhalten: Der schnellste Weg zur Vereinigung von Sets

Und es gibt noch einige andere Python-bezogene Fragen, aber keine schlägt den schnellsten Weg vor, die Listen zu gewerkschaftlich zu organisieren:

Aus den Antworten geht hervor, dass es mindestens zwei Möglichkeiten gibt:

%Vor%

Beachten Sie, dass ich das Set anschließend zur Liste übergebe, weil ich die Reihenfolge der Liste für die weitere Verarbeitung fixieren muss.

Nach einem Vergleich scheint list(set(chain(*x))) stabiler zu sein und benötigt weniger Zeit:

%Vor%

[out]:

%Vor%

Herausnehmen der Variablen von Casting-Sets zum Auflisten:

%Vor%

[out]:

%Vor%

Hier ist die vollständige Ausgabe, wenn ich versuche, die Zwischenzeiten (ohne Listcasting) zu drucken: Ссылка

Warum benötigt list(set(chain(*x))) weniger Zeit als list(set().union(*x)) ?

Gibt es eine andere Möglichkeit, die gleiche Liste von Listen zu erreichen? Verwenden Sie numpy oder pandas oder sframe oder etwas? Ist die Alternative schneller?

    
alvas 08.03.2016, 11:24
quelle

1 Antwort

7

Was am schnellsten ist, hängt von der Art von x ab - ob es eine lange Liste oder eine kurze Liste ist, mit vielen Unterlisten oder wenigen Unterlisten, ob die Unterlisten lang oder kurz sind und ob es viele Duplikate oder wenige Duplikate gibt .

Hier sind einige Zeit-Ergebnisse, die einige Alternativen vergleichen. Es gibt so viele Möglichkeiten, dass dies keine vollständige Analyse ist, aber vielleicht gibt Ihnen das einen Rahmen für die Untersuchung Ihres Anwendungsfalls.

%Vor%

Stellen Sie sicher, dass Sie die timeit-Benchmarks auf Ihrem eigenen Computer ausführen, da die Ergebnisse variieren können.

%Vor%     
unutbu 08.03.2016, 15:45
quelle

Tags und Links