Seite 1 von 1

Doppelte Elemente aus zwei Listen entfernen

Verfasst: Sonntag 23. Januar 2011, 19:02
von burli
Ich habe mal wieder eine Frage. Ich könnte die Aufgabe zwar zu Fuß lösen, aber eventuell bietet mir Python dafür schon eine Funktion, die ich nur noch nicht kenne.

Gegeben sind zwei Listen. Ich möchte die beiden Listen miteinander vergleichen und alle doppelten Einträge aus einer Liste entfernen. Beispiel:

Code: Alles auswählen

liste1 = ['A','B','C','D']
liste2 = ['B','C','E']
liste1 soll unverändert bleiben, aus liste2 alle Elemente entfernt werden, die auch in list1 vorkommen. Ergebnis soll lauten

Code: Alles auswählen

liste1 = ['A','B','C','D']
liste2 = ['E']
Biete Python schon eine Funktion oder muss ich selbst Hand anlegen? Ich weiß leider nicht, wie man eine solche Funktion mathematisch nennt, sonst wäre die Suche vielleicht einfacher. Oder ginge das vielleicht mit einem Set? Wenn ich die beiden Listen in zwei Sets packe erziele ich jedenfalls das gewünschte Ergebnis. Ist der Weg richtig?

Re: Doppelte Elemente aus zwei Listen entfernen

Verfasst: Sonntag 23. Januar 2011, 19:06
von Hyperion
Du suchst die Differenz zwischen zwei Mengen.

Code: Alles auswählen

In [56]: liste1 = ['A','B','C','D']

In [57]: liste2 = ['B','C','E']

In [58]: set(liste2) - set(liste1)
Out[58]: set(['E'])
Allerdings solltest Du beim Wandeln aufpassen, dass Du nicht öfter als nötig zwischen sets und listen hin und her konvertierst. Das kostet ja auch Rechenzeit.

Re: Doppelte Elemente aus zwei Listen entfernen

Verfasst: Sonntag 23. Januar 2011, 19:20
von burli
Ok, danke, dann hatte ich die Lösung schon richtig und das ganze läuft über set()

Ich frage mich sowieso langsam, wie effizient das hier noch ist, was ich hier programmiere, so von wegen Listen mit Listen mit Objekten ...