Merge-Listen, die gemeinsame Elemente

Mein input ist eine Liste von Listen. Einige gemeinsame Elemente, wie zB.

L = [['a','b','c'],['b','d','e'],['k'],['o','p'],['e','f'],['p','a'],['d','g']]

Ich Zusammenführen müssen alle Listen, die ein gemeinsames element, und wiederholen Sie diesen Vorgang so lange, als es keine mehr Listen mit der gleichen Artikelnummer. Ich dachte über die Verwendung von booleschen Operationen und eine while-Schleife, konnte aber nicht kommen mit einer guten Lösung.

Das Endergebnis sollte sein:

L = [['a','b','c','d','e','f','g','o','p'],['k']] 
Was meinst du mit verschmelzen? Union? Können Sie zeigen, welches Ergebnis erwarten Sie für Ihr Beispiel-Daten?
In Ihrem Beispiel, würden Sie stoppen Sie, wenn Sie auf [k]? Oder gehen Sie über alle dein Listen?
was ist mit der Liste [[a, b, c], [b, d, e], [d, f, g]]. Sollten alle sein verschmolzen sich zu einer Liste? die ersten und die letzten Listen nicht haben ein gemeinsames element.
So oder so, der Komplexität werden am besten expotential (wahrscheinlich noch schlimmer). Wie wäre es mit sets statt, um zumindest die Prüfung für die gemeinsamen Elemente schnell?
Sie gehen durch die ganze Liste einmal Eintritt in alle Listen, die ein gemeinsames element (wenn bool(set(A) & Satz(B)) == True). Danach prüfen Sie wieder und wieder, so lange wie Sie können nicht an der restlichen Liste. Wenn es eine Liste mit keine gemeinsamen Elemente auf andere Listen, wir halten es, wie es ist.

InformationsquelleAutor Wistful Jesus | 2011-01-30

Schreibe einen Kommentar