Listenschnittpunkt in Python

Muhammad Maisam Abbas 10 Oktober 2023
  1. Listenschnittpunkt in Python mit dem &-Operator erhalten
  2. Listenschnittpunkt in Python mit der Methode intersection() ermitteln
Listenschnittpunkt in Python

In diesem Lernprogramm werden wir verschiedene Methoden besprechen, um die Schnittmenge zwischen zwei Listen in Python zu erhalten.

Schnittmenge (oder AND) ist im Grunde eine Operation, die speziell für sets entwickelt wurde. Sie funktioniert, indem sie die gemeinsamen Elemente in zwei Mengen auswählt. Zum Beispiel,

setA = {1, 2, 3, 4, 5}
setB = {0, 2, 4, 6}

print(setA & setB)

Ausgabe:

{2, 4}

Im obigen Beispiel sind setA und setB zwei Mengen, und der &-Operator führt eine Schnittmengenoperation mit den Sets durch.

Python unterstützt standardmäßig keine direkte Schnittmenge auf Listen. Aber mit ein paar Anpassungen können wir die Schnittmenge auch auf Listen anwenden.

Listenschnittpunkt in Python mit dem &-Operator erhalten

Der &-Operator kann, wie oben beschrieben, nicht mit Listen verwendet werden. Also müssen wir unsere Listen mit der Methode set() in Mengen umwandeln (https://docs.python.org/3/library/functions.html#func-set).

list1 = [1, 2, 3, 4, 5]
list2 = [0, 2, 4, 6]

set1 = set(list1)
set2 = set(list2)

set3 = set1 & set2
list3 = list(set3)

print(list3)

Ausgabe:

[2, 4]

Die Funktion set() wandelt eine Liste in eine Menge um. Die &-Operation gibt eine Menge zurück, die alle gemeinsamen Elemente in beiden Mengen enthält. Wie wir wissen, müssen wir diese Operation auf Listen und nicht auf Mengen durchführen. Also müssen wir diese Menge mit der Funktion list() in eine Liste umwandeln.

Listenschnittpunkt in Python mit der Methode intersection() ermitteln

Die Methode intersection() der Klasse set ist eine weitere Möglichkeit, Schnittmengen auf Mengen in Python zu erzeugen. Ähnlich wie der &-Operator ist auch sie nur auf Mengen beschränkt. Indem wir aber list1 in eine Menge umwandeln, können wir auch intersection() mit list1 verwenden.

list1 = [1, 2, 3, 4, 5]
list2 = [0, 2, 4, 6]

set1 = set(list1)
set2 = set(list2)

set3 = set(list1).intersection(list2)
list3 = list(set3)

print(list3)

Ausgabe:

[2, 4]

Die Methode intersection() gibt ebenfalls eine Menge mit allen gemeinsamen Elementen zurück. Wir müssen sie also mit der Funktion list() in eine Liste umwandeln.

Listenschnittmenge in Python mit den List Comprehensions ermitteln

Beide oben besprochenen Methoden sind darauf ausgelegt, mit Mengen und nicht mit Listen zu arbeiten. Da wir alle wissen, dass eine Menge keine wiederkehrenden Werte haben kann und ihre Elemente unsortiert sind, funktionieren diese Funktionen nicht gut, wenn wir wiederkehrende Werte in unseren Listen haben oder wir die Reihenfolge in unseren Listen beibehalten wollen.

Die Nachteile der beiden vorherigen Methoden werden in diesem Programmierbeispiel demonstriert.

list1 = [1, 2, 3, 2, 4, 5]
list2 = [0, 2, 2, 4, 6]

setintersection = list(set(list1) & set(list2))
intersectionmethod = list(set(list1).intersection(list2))

print("The result of set intersection :")
print(setintersection)
print("The result of intersection() method :")
print(intersectionmethod)

Ausgabe:

The result of set intersection :
[2, 4]
The result of intersection() method :
[2, 4]

Wie oben gezeigt, erwarten wir [2, 2, 4] als richtiges Ergebnis, erhalten aber nur [2, 4].

Das List Comprehensions ist eine weitere Möglichkeit, die AND-Operation auf Listen in Python durchzuführen. Es kann mit wiederkehrenden Werten umgehen und behält auch die Reihenfolge der Elemente bei, die bei den beiden obigen Methoden nicht eingehalten wird.

# Solution 2 Using list comprehensions
list1 = [1, 2, 3, 2, 4, 5]
list2 = [0, 2, 2, 4, 6]
list3 = [x for x in list1 if x in list2]
# all the x values that are in A, if the X value is in B
print(list3)

Ausgabe:

[2, 2, 4]
Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Verwandter Artikel - Python List