Skip to content

Sets (Mengen)

Ein set() ist eine Sammlung von unveränderlichen und eindeutigen Elementen - genau wie im mathematischen Sinne. Es ist gewissermaßen eine Liste, die keine Duplikate zulässt. Es kann aus einem iterable Container erstellt werden, z.B. einer Liste oder einem Tupel. Einträge in einem Set müssen wiederum unveränderlich sein.

set([1, 1, 0]) # Ergibt {0, 1}

Ein nicht-leeres Set kann auch direkt mit geschweiften Klammern {...} erstellt werden. Ein leeres Set lässt sich so nicht erzeugen, weil diese Syntax bereits dem Dictionary vorbehalten ist. Hier muss set() verwendet werden.

{1, 2, 3}

Für Mengen gibt es eine Vielzahl von Operationen:

Operation Beschreibung Beispiel Ergebnis
len(s) Anzahl der Elemente len({1, 2, 3}) 3
x in s Prüft, ob x in s enthalten ist 2 in {1, 2, 3} True
x not in s Prüft, ob x in s nicht enthalten ist 2 not in {1, 2, 3} False
s | t Vereinigung von s und t {1, 2} | {2, 3} {1, 2, 3}
s & t Schnittmenge von s und t {1, 2} & {2, 3} {2}
s - t Differenzmenge von s und t {1, 2} - {2, 3} {1}
s ^ t Symmetrische Differenzmenge von s und t {1, 2} ^ {2, 3} {1, 3}
s <= t Prüft, ob s eine Teilmenge von t ist {1, 2} <= {1, 2, 3} True
s >= t Prüft, ob s eine Obermenge von t ist {1, 2, 3} >= {1, 2} True

Wer die Operator-Schreibweise für verwirrend hält, kann auch die Methoden-Schreibweise verwenden:

Operation Beschreibung Beispiel Ergebnis
s.issubset(t) Prüft, ob s eine Teilmenge von t ist {1, 2}.issubset({1, 2, 3}) True
s.issuperset(t) Prüft, ob s eine Obermenge von t ist {1, 2, 3}.issuperset({1, 2}) True
s.union(t) Vereinigung von s und t {1, 2}.union({2, 3}) {1, 2, 3}
s.intersection(t) Schnittmenge von s und t {1, 2}.intersection({2, 3}) {2}
s.difference(t) Differenzmenge von s und t {1, 2}.difference({2, 3}) {1}
s.symmetric_difference(t) Symmetrische Differenzmenge von s und t {1, 2}.symmetric_difference({2, 3}) {1, 3}