Doppelte Elemente aus zwei Listen entfernen

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
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

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?
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

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 ...
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
Antworten