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} |