Der Datentyp set repräsentiert eine Menge. Der ähnliche Datentyp frozenset ist eine unveränderbare Menge. Die Elemente in Mengen haben keine bestimmte Reihenfolge und enthalten keine doppelten Elemente.
set erstellen
Sets können einfach aus einem iterable Objekt erstellt werden. Die einzelnen Elemente des Objekts müssen die beiden Funktionen __hash__ und __eq__ besitzen. Für eingebaute Datentypen trifft dies auf alle unveränderlichen Objekte, also Tupel1, frozensets, Zeichenketten und Zahlen, zu.
1 A = set("abc") # Set mit den 3 Elementen: a, b, c
2 B = set(['c', 'd', 'e', 'f']) # Set mit den 4 Elementen: c, d, e, f
3 C = set() # Leeres Set
Handhabung von Mengen
1 A.add(1) # Element ''1'' der Menge A hinzufügen
2 print A # Ausgabe: set(['a', 1, 'c', 'b'])
3
4 A.remove(1) # Element ''1'' aus der Menge A entfernen
5 print A # Ausgabe: set(['a', 'c', 'b'])
6
7 print len(A) # Anzahl elemente der Menge A - Ausgabe: 3
8
9 print 'd' in A # Ausgabe: False
10 print 'c' in A # Ausgabe: True
11 print 'd' not in A # Ausgabe: True
12 print 'c' not in A # Ausgabe: False
Mengenoperationen
Vereinigungsmenge
Elemente, die in der Menge A oder in der Menge B vorhanden sind.
1 print A | B # Ausgabe: set(['a', 'c', 'b', 'e', 'd', 'f'])
2 print A.union(B) # Ausgabe: set(['a', 'c', 'b', 'e', 'd', 'f'])
Schnittmenge
Elemente, die in der Menge A und in der Menge B vorhanden sind.
1 print A & B # Ausgabe: set(['c'])
2 print A.intersection(B) # Ausgabe: set(['c'])
Differenzmenge
Elemente, die in der Menge A, aber nicht in der Menge B vorhanden sind.
1 print A - B # Ausgabe: set(['a', 'b'])
2 print A.difference(B) # Ausgabe: set(['a', 'b'])
symmetrische Differenzmenge
Elemente, die in der Menge A und in der Menge B, aber nicht in beiden vorhanden sind.
1 print A ^ B # Ausgabe: set(['a', 'b', 'e', 'd', 'f'])
2 print A.symmetric_difference(B) # Ausgabe: set(['a', 'b', 'e', 'd', 'f'])
Teilmengen
Untermenge
Prüft ob Menge C eine Untermenge von A ist.
1 print C <= A # Ausgabe: True
2 print C.issubset(A) # Ausgabe: True
3 print C.issubset(B) # Ausgabe: False
Entsprechend gibt es auch < für "echte Untermenge" (A enthält mindestens ein Element weniger als C).
Obermenge
Prüft ob Menge A eine Obermenge von C ist.
1 print A >= C # Ausgabe: True
2 print A.issuperset(C) # Ausgabe: True
3 print B.issuperset(C) # Ausgabe: False
Entsprechend gibt es auch > für "echte Obermenge" (A enthält mindestens ein Element mehr als C).
deren Elemente natürlich auch dieser Bedingung genügen müssen (1)