Python-Sets meistern: Erstellung, Manipulation & Operationen
Python-Sets
Entdecken Sie, wie Pythons Set-Datentyp Datendeduplizierung und mengenbasierte Operationen vereinfacht. Dieser Leitfaden behandelt Erstellung, Modifikation, Löschung und alle wesentlichen Mengenoperationen.
Video: Sets in Python
Ein Set ist eine ungeordnete Sammlung einzigartiger, unveränderlicher Elemente. Während das Set selbst veränderbar ist – was das Hinzufügen oder Entfernen von Elementen erlaubt – müssen seine einzelnen Elemente hashbar sein (z. B. Zahlen, Strings, Tupel).
Python-Sets unterstützen mathematische Mengenoperationen wie Vereinigung, Durchschnitt, Differenz und symmetrische Differenz, was sie ideal für Aufgaben wie Datendeduplizierung, Mitgliedschaftstests und Mengenalgebra macht.
Python-Sets erstellen
Verwenden Sie geschweifte Klammern oder den eingebauten set()-Konstruktor, um ein Set zu erstellen. Elemente können jeden unveränderlichen Typ haben, aber veränderliche Typen wie Listen, Dicts oder andere Sets können nicht enthalten sein.
# Beispiel 1: Sets mit verschiedenen Datentypen
# Set von Ganzzahlen
my_set = {1, 2, 3}
print(my_set)
# Set mit gemischten Datentypen
my_set = {1.0, 'Hallo', (1, 2, 3)}
print(my_set)
Ausgabe
{1, 2, 3} {1.0, (1, 2, 3), 'Hallo'}
Beachten Sie, wie doppelte Werte automatisch entfernt werden und wie Tupel – da unveränderlich – akzeptiert werden.
# Duplikate entfernen
my_set = {1, 2, 3, 4, 3, 2}
print(my_set)
# Set aus einer Liste konstruieren
my_set = set([1, 2, 3, 2])
print(my_set)
# Versuch, ein veränderliches Element einzuschließen, verursacht einen Fehler
# my_set = {1, 2, [3, 4]} # TypeError: unhashable type: 'list'
Ausgabe
{1, 2, 3, 4} {1, 2, 3} Traceback (most recent call last): File "<string>", line 15, in <module> my_set = {1, 2, [3, 4]} TypeError: unhashable type: 'list'
Die Erstellung eines leeren Sets erfordert den set()-Konstruktor; die Verwendung von {} erstellt stattdessen ein leeres Dictionary.
# Set und Dictionary bei leeren Strukturen unterscheiden
a = {}
print(type(a))
a = set()
print(type(a))
Ausgabe
<class 'dict'> <class 'set'>
Ein Set in Python modifizieren
Sets sind veränderbar, unterstützen aber aufgrund ihrer ungeordneten Natur kein Indexing oder Slicing.
Verwenden Sie add(), um ein einzelnes Element einzufügen, und update(), um ein anderes Iterable in das Set zu mergen. Doppelte Einträge werden automatisch ignoriert.
# Beispiel: Elemente hinzufügen
my_set = {1, 3}
print(my_set)
# Versuch, ein Set zu indexieren, löst einen Fehler aus
# my_set[0] # TypeError: 'set' object does not support indexing
# Einzelnes Element hinzufügen
my_set.add(2)
print(my_set)
# Mehrere Elemente aus einer Liste hinzufügen
my_set.update([2, 3, 4])
print(my_set)
# Liste und anderes Set kombinieren
my_set.update([4, 5], {1, 6, 8})
print(my_set)
Ausgabe
{1, 3} {1, 2, 3} {1, 2, 3, 4} {1, 2, 3, 4, 5, 6, 8}
Elemente aus einem Set entfernen
Verwenden Sie discard(), um ein Element zu entfernen, falls es existiert, andernfalls nichts zu tun. Im Gegensatz dazu löst remove() einen KeyError aus, wenn das Element fehlt.
# Beispiel: Discard vs. Remove
my_set = {1, 3, 4, 5, 6}
print(my_set)
my_set.discard(4)
print(my_set)
my_set.remove(6)
print(my_set)
my_set.discard(2)
print(my_set)
# Das folgende wird KeyError auslösen
# my_set.remove(2)
Ausgabe
{1, 3, 4, 5, 6} {1, 3, 5, 6} {1, 3, 5} {1, 3, 5} Traceback (most recent call last): File "<string>", line 28, in <module> KeyError: 2
Die pop()-Methode entfernt und gibt ein beliebiges Element zurück, während clear() das Set vollständig leert.
# Pop- und Clear-Beispiel
my_set = set("HalloWelt")
print(my_set)
print(my_set.pop())
print(my_set)
my_set.clear()
print(my_set)
Ausgabe
{'H', 'l', 'r', 'W', 'o', 'd', 'e'} H {'r', 'W', 'o', 'd', 'e'} set()
Python-Set-Operationen
Python-Sets unterstützen klassische Mengenalgebra: Vereinigung, Durchschnitt, Differenz und symmetrische Differenz. Diese können über Operatoren oder dedizierte Methoden aufgerufen werden.
Lassen Sie uns zwei Beispiel-Sets verwenden:
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
Vereinigung

Die Vereinigung von A und B kombiniert alle eindeutigen Elemente.
print(A | B)
Ausgabe
{1, 2, 3, 4, 5, 6, 7, 8}
Durchschnitt

Der Durchschnitt gibt nur Elemente zurück, die in beiden Sets gemeinsam sind.
print(A & B)
Ausgabe
{4, 5}
Differenz

Die Differenz A - B listet Elemente auf, die in A aber nicht in B vorhanden sind.
print(A - B)
Ausgabe
{1, 2, 3}
Symmetrische Differenz

Die symmetrische Differenz A ^ B gibt Elemente zurück, die in einem der Sets, aber nicht in beiden sind.
print(A ^ B)
Ausgabe
{1, 2, 3, 6, 7, 8}
Weitere Set-Methoden
Nachfolgend eine Kurzreferenz für alle eingebauten Methoden, die auf Set-Objekten verfügbar sind:
| Methode | Beschreibung |
|---|---|
| add() | Fügt ein Element zum Set hinzu |
| clear() | Entfernt alle Elemente |
| copy() | Gibt eine flache Kopie zurück |
| difference() | Gibt ein neues Set mit Elementen zurück, die im Aufrufer, aber nicht in anderen sind |
| difference_update() | In-place Differenz-Entfernung |
| discard() | Entfernt Element, falls vorhanden; kein Fehler bei Abwesenheit |
| intersection() | Gibt ein neues Set mit gemeinsamen Elementen zurück |
| intersection_update() | In-place Durchschnitts-Update |
| isdisjoint() | True, wenn Sets keine gemeinsamen Elemente haben |
| issubset() | True, wenn Aufrufer eine Teilmenge eines anderen Sets ist |
| issuperset() | True, wenn Aufrufer ein anderes Set vollständig enthält |
| pop() | Entfernt und gibt ein beliebiges Element zurück; KeyError bei leerem Set |
| remove() | Entfernt Element; KeyError bei Abwesenheit |
| symmetric_difference() | Gibt ein neues Set mit exklusiven Elementen zurück |
| symmetric_difference_update() | In-place symmetrische Differenz-Update |
| union() | Gibt ein neues Set mit allen eindeutigen Elementen zurück |
| update() | In-place Vereinigung mit einem anderen Iterable |
Set-Mitgliedschaftstest
Prüfen Sie die Elementexistenz mit dem Schlüsselwort in.
my_set = set("apfel")
print('a' in my_set) # True
print('p' not in my_set) # False
Ausgabe
True False
Über ein Set iterieren
Schleifen Sie über ein Set mit einer Standard-for-Schleife; die Reihenfolge ist nicht garantiert.
for letter in set("apfel"):
print(letter)
Eingebaute Funktionen mit Sets
Funktionen wie len(), max(), min(), sum(), all(), any() und sorted() funktionieren nahtlos mit Sets. Hier ist eine Tabelle gängiger Hilfsfunktionen:
| Funktion | Beschreibung |
|---|---|
| all() | True, wenn alle Elemente truthy sind (oder Set leer) |
| any() | True, wenn mindestens ein Element truthy ist |
| enumerate() | Iteriert mit Index, nützlich für Debugging |
| len() | Anzahl der Elemente |
| max() | Größtes Element |
| min() | Kleinstes Element |
| sorted() | Gibt eine sortierte Liste aus dem Set zurück |
| sum() | Summe aller numerischen Elemente |
Python Frozenset
Ein frozenset ist ein unveränderliches Gegenstück zu einem Set. Einmal erstellt, können sich seine Elemente nicht ändern, was es hashbar und als Dictionary-Key verwendbar macht.
A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6])
Unterstützte Operationen spiegeln die regulärer Sets wider, mit Ausnahme der mutierenden Methoden.
print(A.isdisjoint(B))
print(A.difference(B))
print(A | B)
# Versuch, ein Element hinzuzufügen, löst AttributeError aus
# A.add(3) # AttributeError: 'frozenset' object has no attribute 'add'
Python
- Python-Datentypen meistern: Praxisleitfaden
- Python-Operatoren meistern: Umfassender Leitfaden
- Python pass-Statement meistern: Praxisleitfaden
- Python-Funktionsargumente meistern: Positional, Keyword & Default-Parameter
- Python-Dictionaries meistern: Erstellung, Manipulation und fortgeschrittene Techniken
- Python Iteratoren meistern: Funktionsweise und Erstellung eigener Iteratoren
- Python Closures erklärt: Wie verschachtelte Funktionen Variablen erfassen
- Python datetime meistern: Praktischer Leitfaden zu Datumsangaben, Zeiten und Zeitzonen
- Python Überblick: Hochlevel, lesbar, interaktiv & objektorientiert
- Python Zahlen: Unveränderliche numerische Datentypen verstehen