Sets

Sets in Python sind eine ungeordnete Sammlung von Objekten, die in Situationen verwendet werden, in denen die Zugehörigkeit und Einzigartigkeit zur Menge die wichtigsten Informationen des Objekts sind. Der in-Operator läuft bei Sets schneller als bei Listen:

set

 1 >>> x = set([4, 2, 3, 2, 1])
 2 >>> x
 3 {1, 2, 3, 4}
 4 >>> 1 in x
 5 True
 6 >>> 5 in x
 7 False
 8 >>> x.add(0)
 9 >>> x
10 {0, 1, 2, 3, 4}
11 >>> x.remove(4)
12 >>> x
13 {0, 1, 2, 3}
14 >>> y = set([3, 4, 5])
15 >>> x | y
16 {0, 1, 2, 3, 4, 5}
17 >>> x & y
18 {3}
19 >>> x ^ y
20 {0, 1, 2, 4, 5}
21 >>> x.update(y)
22 >>> x
23 {0, 1, 2, 3, 4, 5}
Zeile 1

Ihr könnt ein Set erstellen, indem ihr set auf eine Sequenz anwendet, z.B. auf eine Liste.

Zeile 3

Wenn eine Sequenz zu einem Set gemacht wird, werden Duplikate entfernt.

Zeilen 4–7

Das Schlüsselwort in wird verwendet, um die Zugehörigkeit eines Objekts zu einer Menge zu prüfen.

Zeilen 8–13

Mit add und remove könnt ihr die Elemente in set ändern.

Zeile 15

| wird verwendet, um die Vereinigung oder Kombination von zwei Mengen zu erhalten.

Zeile 17

& wird verwendet, um die Schnittmenge zu erhalten.

Zeile 19

^ wird verwendet, um die symmetrische Differenz zu finden, d.h. Elemente, die in der einen oder der anderen Menge enthalten sind, aber nicht in beiden.

frozenset

Neben set gibt es noch frozenset, einen unveränderlichen Datentyp. Damit können sie auch Mitglieder anderer Mengen sein:

 1>>> x = set([4, 2, 3, 2, 1])
 2>>> z = frozenset(x)
 3>>> z
 4frozenset({1, 2, 3, 4})
 5>>> z.add(5)
 6Traceback (most recent call last):
 7  File "<stdin>", line 1, in <module>
 8AttributeError: 'frozenset' object has no attribute 'add'
 9>>> x.add(z)
10>>> x
11{1, 2, 3, 4, frozenset({1, 2, 3, 4})}

Zusammenfassung

Der Geschwindigkeitsvorteil hat jedoch auch ihren Preis: Sets halten die Elemente nicht in der richtigen Reihenfolge, während Listen und Tupel dies tun. Wenn die Reihenfolge für euch wichtig ist, solltet ihr eine Datenstruktur verwenden, die sich die Reihenfolge merkt.

Datentyp

veränderlich

geordnet

indiziert

Duplikate

Sets

Frozensets

Checks

  • Wieviele Elemente hat ein Set, wenn es aus der folgenden Liste [4, 2, 3, 2, 1] gebildet wird?