Nehmen wir an, ich habe zwei Listen, l1
y l2
. Ich möchte auftreten l1 - l2
die alle Elemente von l1
nicht in l2
.
Ich kann mir eine naive Schleifenlösung vorstellen, aber das wäre wirklich ineffizient. Was ist ein pythonischer und effizienter Weg, dies zu tun?
Ein Beispiel: Wenn ich l1 = [1,2,6,8] and l2 = [2,3,5,8]
, l1 - l2
sollte zurückkehren [1,6]
28 Stimmen
Nur ein Tipp: PEP8 besagt, dass das kleine "L" nicht verwendet werden sollte, weil es zu sehr wie eine 1 aussieht.
3 Stimmen
Ich stimme zu. Ich habe diese ganze Frage und die Antworten gelesen und mich gefragt, warum die Leute immer wieder elf und zwölf verwenden. Erst als ich den Kommentar von @spelchekr las, ergab es einen Sinn.
1 Stimmen
Mögliches Duplikat von Löschen von Zeilen aus einem Datenrahmen auf der Grundlage einer "nicht in"-Bedingung
3 Stimmen
@JimG. Datenrahmen und Liste sind nicht dasselbe.
3 Stimmen
Diese Frage ist nicht klar definiert. Listen erlauben doppelte Einträge. Sollte [1, 1, 2, 3] - [1, 2] [1, 3] oder nur [3] ergeben? Die nachstehenden Lösungen scheinen alle davon auszugehen, dass [3] zurückgegeben werden sollte, d. h. dass alle Elemente, die mit einem Element der zweiten Liste übereinstimmen, aus der ersten Liste entfernt werden sollten. Manchmal müssen Listenoperationen algebraischen Eigenschaften gehorchen. Wenn A - B = C, dann C + B = A. Das ist hier nicht der Fall, da doppelte Werte verloren gehen.
0 Stimmen
Siehe auch: Wie findet man Listenschnittpunkte? . (Diese Frage ist für die Liste Unterschied was gleichbedeutend ist mit dem Entfernen der Schnittmenge aus der ersten Eingabe).