Wie man in Python eine Listensubtraktion durchführt

Rayven Esplanada 10 Oktober 2023
  1. Liste in set umwandeln, um eine Listensubtraktion in Python durchzuführen
  2. List Comprehensions verwenden, um Listenunterschiede in Python zu erhalten
Wie man in Python eine Listensubtraktion durchführt

Dieses Tutorial demonstriert, wie man die Listensubtraktion, oder anders ausgedrückt, die Listenminus-Liste in Python durchführt.

Wie von der Mengenlehre in der Mathematik definiert, bezieht sich die Differenz zweier Mengen auf die Elemente aus der einen Menge, die in der anderen Menge nicht vorhanden sind.

Wenn wir zum Beispiel diese beiden Listen deklarieren

list1 = [1, 2, 4]
list2 = [2, 3]

Die Differenz von list1 - list2 wäre [1, 4], während list2 - list1 [3] wäre.

Liste in set umwandeln, um eine Listensubtraktion in Python durchzuführen

Mengenlehreoperationen werden in Python unterstützt. Diese Operationen werden jedoch nur vom Datentyp set unterstützt. Daher müssen Listen in set konvertiert werden, um die Operation set zu verwenden. Dies ist möglich, indem man eine Liste um die Funktion set() umschließt.

Anmerkung: Die Konvertierung einer Liste in eine Menge entfernt jede Art von Ordnung und entfernt doppelte Werte aus der Liste.

listA = [1, 2, 4, 7, 9, 11, 11, 14, 14]
listB = [2, 3, 7, 8, 11, 13, 13, 16]
setA = set(listA)
setB = set(listB)

print("A - B = ", setA - setB)

Ausgabe:

A - B =  {1, 4, 9, 14}

Das Ergebnis gibt die Differenz zwischen den beiden Mengen aus und entfernt die doppelten Werte.

Wir können die Funktion list() benutzen, um das Ergebnis von einer set in eine Liste zu konvertieren.

listA = [1, 2, 4, 7, 9, 11, 11, 14, 14]
listB = [2, 3, 7, 8, 11, 13, 13, 16]
setA = set(listA)
setB = set(listB)

list_diff = list(setA - setB)

print("A - B: ", list_diff)

Ausgabe:

A - B:  [1, 4, 9, 14]

List Comprehensions verwenden, um Listenunterschiede in Python zu erhalten

Mit Hilfe des List Comprehensions kann geprüft werden, ob ein Element nur in der ersten Liste, nicht aber in der zweiten Liste vorhanden ist. Mit dieser Lösung ist es möglich, die Differenzoperation durchzuführen, ohne die Liste in eine Menge umzuwandeln.

listA = [1, 2, 4, 7, 9, 11, 11, 14, 14]
listB = [2, 3, 7, 8, 11, 13, 13, 16]

listSub = [elem for elem in listA if elem not in listB]

print("A - B =", listSub)

Ausgabe:

A - B = [1, 4, 9, 14, 14]

Diese Lösung bringt die Reihenfolge der Liste nicht durcheinander und entfernt Duplikate.

Allerdings wird der Wert 11 zweimal in listA wiederholt, und beide Iterationen von 11 werden aus dem Ergebnis von A - B entfernt, da 11 in beiden Mengen existiert. Dieses Verhalten ist wie erwartet.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Verwandter Artikel - Python List