Sublisten zusammenfügen und doppelte Elemente eliminieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mathematik
User
Beiträge: 28
Registriert: Dienstag 16. April 2013, 12:40

Hallo zusammen,

ich habe folgendes Problem:
Ich habe eine Liste mit 10000 Sublisten. Diese möchte ich jetzt so zusammenfügen, dass immer zwei aufeinander folgende Sublisten eine neue Subliste bilden, wobei die doppelten Zahlen eliminiert werden.
Beispiel:
ursprüngliche Liste

Code: Alles auswählen

K=[[1,2,3,4],[1,4,5,6,7,8,9],[3,43,45,35,57,86,346,239],[1,3,5,13,51,13],[8,95,64],[78,12]]
Ergebnis:

Code: Alles auswählen

Kneu=[[1,2,3,4,5,6,7,8,9],[1,4,5,6,7,8,9,3,43,45,35,57,86,346,239],[3,43,45,35,57,86,346,239,1,5,13,51,13],[8,95,64,78,12]]
Um meine Listen zusammenzufügen, habe ich mir folgendes überlegt:

Code: Alles auswählen

Kneu=[]
for i in range(len(K)-1):
... Kneu.append(K[i]+K[i+1]
Nur wie kann ich meine doppelten Elemente möglichst effizient eliminieren?
Vielen Dank für eure Hilfe!! :)
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

mathematik hat geschrieben:Nur wie kann ich meine doppelten Elemente möglichst effizient eliminieren?
Musst du die Reihenfolge beibehalten? Wenn nicht, dann bietet sich ein Set für die Lösung an.

Code: Alles auswählen

>>> x = [1, 2, 3, 4, 5, 6]
>>> y = [0, 2, 4, 6, 8, 10]
>>> print x + y
[1, 2, 3, 4, 5, 6, 0, 2, 4, 6, 8, 10]
>>> print set(x + y)
set([0, 1, 2, 3, 4, 5, 6, 8, 10])
>>> print list(set(x + y))
[0, 1, 2, 3, 4, 5, 6, 8, 10]
Hier stimmt jetzt die Reihenfolge zufällig noch, aber das ist nicht garantiert.
mathematik
User
Beiträge: 28
Registriert: Dienstag 16. April 2013, 12:40

Ah super danke! Set habe ich gesucht :)
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

So:

Code: Alles auswählen

KNeu=[list(set(a)|set(b)) for a,b in zip(K[:-1],K[1:])]
Antworten