Ich möchte die Schnittmenge zwischen verschachtelten Listen finden, während ich die Reihenfolge beibehalte.
%Vor%Um die Kreuzung zu finden, die ich habe:
%Vor%oder
%Vor%aber die ursprüngliche Reihenfolge wird nicht beibehalten.
%Vor%Grundsätzlich muss ich das letzte gemeinsame Element zwischen den verschachtelten Listen finden (sie sind Taxanomic-Klassifikationen). Ich muss also nicht alle Schnittpunkte finden, nur den letzten oder alle, wenn ich nur den letzten Eintrag aufrufen kann.
%Vor%In diesem Fall möchte ich, dass die Ausgabe 'Erwinia' ist.
Danke für Ihre Hilfe.
Suchen Sie die Schnittmenge und ordnen Sie die Reihenfolge erneut an.
%Vor%Oder, wenn Sie uneigennützig auf Einzeiler sind:
%Vor%Sie können dies erhalten mit:
%Vor%Wenn die Listen groß sind, wäre es effizienter:
%Vor% Ich hatte heute ein ähnliches Problem. In meinen Benchmarks war die Verwendung von set.intersection
der schnellste Weg, dies in CPython zu erreichen, wobei ~ 170us mit meinem Dataset verwendet wurden.
In PyPy hingegen hat eine handgerollte Funktion, die die Reihenfolge ausnutzt, nur ~ 80 us, fast die doppelte Geschwindigkeit von CPython ! Die gleiche Funktion in CPython hat ~ 6200us.
Hier ist diese Funktion für die Nachwelt:
%Vor%Tags und Links python list intersection nested-lists