Python: Schnittpunkt verschachtelter Listen, in denen die Reihenfolge von Bedeutung ist

8

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.

    
Binnie 14.08.2012, 16:47
quelle

4 Antworten

7

Suchen Sie die Schnittmenge und ordnen Sie die Reihenfolge erneut an.

%Vor%

Oder, wenn Sie uneigennützig auf Einzeiler sind:

%Vor%     
Steven Rumbalski 14.08.2012, 17:06
quelle
0

Sie können dies erhalten mit:

%Vor%

Wenn die Listen groß sind, wäre es effizienter:

%Vor%     
David Robinson 14.08.2012 16:59
quelle
0
%Vor%

Beachten Sie, dass dies nur funktioniert, wenn die inneren Listen eindeutig sind.

Und hier ist ein Beispiel mit einem geordneten Zähler:

%Vor%

funktioniert nur, wenn Elemente in jeder Unterliste eindeutig sind

    
mgilson 14.08.2012 17:02
quelle
0

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%     
Alec Thomas 08.02.2013 22:00
quelle