Tutorial
Sets

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

sets_union.png

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

sets_combine.png

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

sets_diff.png

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

sets_sym_diff.png

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

sets_subset.png

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

sets_superset.png

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).

  1. deren Elemente natürlich auch dieser Bedingung genügen müssen (1)

Tutorial/Sets (last edited 2009-06-17 16:14:15 by localhost)