Mengen#
(Klicken Sie hier für die englische Version dieser Seite)
Eine Menge ist eine ungeordnete Sammlung an Elementen, wo es keine Duplikate geben kann.
Man kann mit Mengen in Python genauso arbeiten wie man es von mathematischen Mengen gewöhnt ist.
Da es eine ungeordnete Sammlung von Elementen ist, sollte man sich bei einer Menge nicht darauf verlassen, dass u.a. die Elemente in der Reihenfolge vorliegen, wie man sie eingefügt hat. Dafür sollte man eher eine geordnete Sammlung wie z.B. eine Liste nutzen.
Zusätzlich müssen die Elemente in der Menge, im Gegensatz zu Listen, unveränderlich (immutable) sein. Also die gleiche Anforderung wie Schlüssel in einem Dictionary.
Syntax#
Die Syntax für Mengen ist sehr ähnlich zu Listen. Der einzige Unterschied ist, dass anstatt eckiger Klammern, geschweifte Klammern genutzt werden. Sonst ist die Erstellung identisch.
liste = [1, 2, 3]
menge = {1, 2, 3}
Da die gleichen Trennzeichen ({
und }
) wie für Dictionaries genutzt werden, ist es nicht ganz klar, was unter {}
verstanden werden soll.
Es könnte entweder eine leere Menge darstellen oder ein leeres Dictionary. Python löst es, indem {}
als ein leeres Dictionary definiert wird.
Um eine leere Menge zu erstellen, soll stattdessen die Funktion set()
genutzt werden
print(type( {} ))
# --> <class 'dict'>
print(type( set() ))
# --> <class 'set'>
Hinzufügen und Löschen von Elementen in einer Menge#
Um ein Elemente in eine Menge hinzuzufügen, wird die Funktion Menge.add(Element)
genutzt. Wenn man mit Menge.add(Element)
versucht ein Element hinzuzufügen, welches in der Menge bereits existiert, wird die Menge nicht verändert.
menge = {1, 2, 3}
menge.add(5)
menge.add(4)
menge.add(4)
print(menge)
# --> {1, 2, 3, 4, 5}
# Man beachte hier, dass die 5 vor der 4 eingefügt wurde,
# aber bei der Ausgabe die 4 trotzdem vor der 5 kommt.
# Das liegt daran, dass Mengen eine
# ungeordnete Datenstruktur sind und die Reihenfolge
# der Elemente nicht garantiert wird.
Mit Menge.remove(Element)
kann man ein Element aus einer Menge entfernen.
menge = {1, 2, 3}
menge.remove(3)
print(menge)
# --> {1, 2}
Überprüfen ob ein Element in der Menge enthalten ist#
Mit dem Keyword in
kann man überprüfen ob ein Element in einer Menge enthalten ist.
planeten = {"Erde", "Saturn", "Mars"}
print( "Saturn" in planeten )
# --> True
print( "Pluto" in planeten )
# --> False
Mengenoperationen#
Interessant bei Mengen sind die Mengenoperationen, welche ausgeführt werden können. Zu den Mengenoperationen gehören z.B. Vereinigung, Schnittmenge, Differenz und symmetrische Differenz.
Die Vereinigung \(A \cup B\) kann mit der Methode A.union(B)
oder kurz A | B
berechnet werden.
Die Schnittmenge \(A \cap B\) kann mit der Methode A.intersection(B)
oder kurz mit A & B
berechnet werden.
Die Differenz \(A \setminus B\) kann mit der Methode A.difference(B)
oder kurz mit A - B
berechnet werden.
Die symmetrische Differenz \(A \triangle B\) kann mit der Methode A.symmetric_difference(B)
oder kurz mit A ^ B
berechnet werden.
a = {1, 2, 3}
b = {3, 4, 5}
print( a.union(b) ) # a | b
# --> {1, 2, 3, 4, 5}
print( a.intersection(b) ) # a & b
# --> {3}
print( a.difference(b) ) # a - b
# --> {1, 2}
print( a.symmetric_difference(b) ) # a ^ b
# --> {1, 2, 4, 5}
Aufgabe#
Nutzen Sie Mengenoperationen, um den gegebenen Ausdruck nachzuprogrammieren.
# Hier können Sie ihren Versuch schreiben...
A = {1, 2, 3}
B = {6, 7, 1}
C = {6}
D = {6, 7, 3}
ergebnis = ...
print(ergebnis)
Ellipsis
Lösung
A = {1, 2, 3}
B = {6, 7, 1}
C = {6}
D = {6, 7, 3}
ergebnis = A.union(B).intersection(B).difference(D.symmetric_difference(C))
print(ergebnis)
# --> {1, 6}
ergebnis = ((A | B) & B) - (D ^ C)
print(ergebnis)
# --> {1, 6}
Als Ergebnis sollte die Menge {1, 6}
herauskommen.