W3docs

Python Set-Methoden – Vollständige Referenz mit Beispielen

Vollständige Übersicht der Python Set-Methoden: union, intersection, difference, update, add, remove, discard, copy, isdisjoint und mehr mit Beispielen.

Python-Sets sind ungeordnete Sammlungen eindeutiger, hashfähiger Elemente. Da Sets das mathematische Konzept einer Menge implementieren, verfügen sie über eine umfangreiche Sammlung eingebauter Methoden zum Kombinieren, Vergleichen und Modifizieren. Dieses Kapitel behandelt jede eingebaute Set-Methode mit klaren Beispielen, erwarteter Ausgabe und Hinweisen, wann welche Methode zu bevorzugen ist.

Wenn Sie neu bei Sets sind, lesen Sie zuerst Python Sets, um zu verstehen, wie Sets erstellt werden und warum sie sich von Listen und Tupeln unterscheiden.

Sets erstellen

Verwenden Sie geschweifte Klammern {} oder den Konstruktor set(), um ein Set zu erstellen. Der Konstruktor akzeptiert auch jedes Iterable — eine Liste, ein Tupel oder einen string — und entfernt automatisch Duplikate.

fruits = {'apple', 'banana', 'cherry'}
colors = set(['red', 'green', 'blue'])   # from a list
vowels = set('aeiou')                    # from a string → {'a', 'e', 'i', 'o', 'u'}

empty = set()   # NOT {} — that creates an empty dict

Sets sind ungeordnet: die angezeigte Reihenfolge der Elemente kann zwischen Ausführungen und Python-Versionen variieren.

Set-Operationsmethoden

Diese Methoden kombinieren oder vergleichen zwei oder mehr Sets, ohne die Originale zu verändern.

union()

union(*others) gibt ein neues Set zurück, das jedes Element enthält, das im aktuellen Set oder in einem der others vorkommt.

python— editable, runs on the server

Der Operator | ist die entsprechende Kurzform für zwei Sets: A | B.

Wann verwenden: Mehrere Sammlungen zusammenführen und dabei Duplikate in einem einzigen Schritt entfernen.

intersection()

intersection(*others) gibt ein neues Set zurück, das nur die Elemente enthält, die im aktuellen Set und in jedem der others vorkommen.

python— editable, runs on the server

Der Operator & ist die Kurzform für zwei Sets: A & B.

Wann verwenden: Gemeinsame Elemente finden — zum Beispiel Benutzer, die sowohl auf Anzeige A als auch auf Anzeige B geklickt haben.

difference()

difference(*others) gibt ein neues Set mit Elementen zurück, die im aktuellen Set vorhanden sind, aber nicht in einem der others.

python— editable, runs on the server

Der Operator - ist die Kurzform: A - B.

Wann verwenden: Eine Gruppe aus einer anderen herausfiltern — zum Beispiel Produkte finden, die auf Lager, aber noch nicht versandt sind.

symmetric_difference()

symmetric_difference(other) gibt ein neues Set mit Elementen zurück, die in genau einem der beiden Sets vorkommen — also die Elemente, die nicht gemeinsam sind.

python— editable, runs on the server

Der Operator ^ ist die Kurzform: A ^ B.

Wann verwenden: Änderungen zwischen zwei Momentaufnahmen erkennen — zum Beispiel Dateien, die zwischen zwei Verzeichnisauflistungen hinzugefügt oder gelöscht wurden.

issubset()

issubset(other) gibt True zurück, wenn jedes Element des aktuellen Sets auch in other enthalten ist.

python— editable, runs on the server

Der Operator <= ist gleichwertig; verwenden Sie <, um eine echte Teilmenge zu prüfen (A ist kleiner als B und vollständig enthalten).

issuperset()

issuperset(other) gibt True zurück, wenn das aktuelle Set jedes Element von other enthält.

A = {1, 2, 3, 4, 5}
B = {2, 3}

print(A.issuperset(B))   # True
print(B.issuperset(A))   # False

Der Operator >= ist gleichwertig; verwenden Sie >, um eine echte Obermenge zu prüfen.

isdisjoint()

isdisjoint(other) gibt True zurück, wenn die beiden Sets keine gemeinsamen Elemente haben — ihre Schnittmenge ist leer.

A = {1, 2, 3}
B = {4, 5, 6}
C = {3, 4, 5}

print(A.isdisjoint(B))   # True  — no overlap
print(A.isdisjoint(C))   # False — 3 is in both

Wann verwenden: Nicht überlappende Kategorien validieren, prüfen, ob zwei Berechtigungs-Sets sich gegenseitig ausschließen.

In-place-Aktualisierungsmethoden

Diese Methoden verändern das Set in place und geben None zurück — sie erstellen kein neues Set.

update()

update(*others) fügt alle Elemente aus einem oder mehreren Iterables in das aktuelle Set ein und ignoriert dabei Duplikate.

python— editable, runs on the server

update() akzeptiert jedes Iterable, nicht nur ein anderes Set — auch eine Liste, ein Tupel oder ein string funktioniert. Der Operator |= ist die Kurzform für zwei Sets.

intersection_update()

intersection_update(*others) behält nur die Elemente, die auch in jedem der others vorhanden sind, und verwirft alles andere.

A = {1, 2, 3, 4}
B = {2, 3, 4, 5}

A.intersection_update(B)
print(A)   # {2, 3, 4}

Der Operator &= ist die Kurzform.

difference_update()

difference_update(*others) entfernt aus dem aktuellen Set jedes Element, das in einem der others vorkommt.

A = {1, 2, 3, 4}
B = {3, 4, 5}

A.difference_update(B)
print(A)   # {1, 2}

Der Operator -= ist die Kurzform.

symmetric_difference_update()

symmetric_difference_update(other) behält nur die Elemente, die in genau einem der beiden Sets vorkommen, und aktualisiert das Set in place.

A = {1, 2, 3}
B = {2, 3, 4}

A.symmetric_difference_update(B)
print(A)   # {1, 4}

Der Operator ^= ist die Kurzform.

Methoden zur Elementmanipulation

add()

add(elem) fügt elem in das Set ein. Wenn elem bereits vorhanden ist, bleibt das Set unverändert.

python— editable, runs on the server

Weitere Möglichkeiten, ein Set zu befüllen, finden Sie unter Adding Set Items.

remove()

remove(elem) entfernt elem aus dem Set. Wirft einen KeyError, wenn elem nicht vorhanden ist.

python— editable, runs on the server

Verwenden Sie remove(), wenn das Element zwingend im Set vorhanden sein muss und ein unerwartetes Fehlen ein Programmierfehler ist, der sichtbar gemacht werden soll.

discard()

discard(elem) entfernt elem aus dem Set. Wirft keinen Fehler, wenn elem nicht vorhanden ist.

python— editable, runs on the server

Verwenden Sie discard(), wenn das Element im Set vorhanden sein kann oder nicht, und Sie es einfach entfernen möchten.

pop()

pop() entfernt und gibt ein beliebiges Element zurück. Da Sets ungeordnet sind, lässt sich nicht vorhersagen, welches Element entfernt wird. Wirft einen KeyError, wenn das Set leer ist.

python— editable, runs on the server

Einen Vergleich aller Entfernungsansätze finden Sie unter Removing Set Items.

clear()

clear() entfernt jedes Element und hinterlässt ein leeres Set.

python— editable, runs on the server

Beachten Sie, dass print(set()) set() ausgibt, nicht {}, um ein leeres Set von einem leeren dict zu unterscheiden.

copy()

copy() gibt eine flache Kopie des Sets zurück. Das Ändern der Kopie hat keinen Einfluss auf das Original.

A = {1, 2, 3}
B = A.copy()

B.add(4)
print(A)   # {1, 2, 3}  — unchanged
print(B)   # {1, 2, 3, 4}

Dies ist wichtig, weil eine einfache Zuweisung (B = A) eine zweite Referenz auf das gleiche Set erstellt — Änderungen an B würden auch A betreffen.

Methode vs. Operator: Was ist zu bevorzugen?

Die meisten Set-Operationen haben sowohl eine Methoden- als auch eine Operatorform:

OperationMethodeOperator
UnionA.union(B)A | B
IntersectionA.intersection(B)A & B
DifferenceA.difference(B)A - B
Symmetric differenceA.symmetric_difference(B)A ^ B
In-place unionA.update(B)A |= B
In-place intersectionA.intersection_update(B)A &= B
In-place differenceA.difference_update(B)A -= B
In-place symmetric diffA.symmetric_difference_update(B)A ^= B
SubsetA.issubset(B)A <= B
SupersetA.issuperset(B)A >= B

Wesentlicher Unterschied: Die Methoden akzeptieren jedes Iterable als Argument, während die Operatoren erfordern, dass beide Seiten Sets sind. Verwenden Sie Methoden, wenn Sie direkt auf einer Liste oder einem Tupel arbeiten möchten, ohne es vorher zu konvertieren:

tags = {'python', 'web'}
new_tags = ['python', 'ml', 'data']

tags.update(new_tags)         # works — list is fine
# tags |= new_tags            # TypeError — operator needs a set
print(tags)   # {'python', 'web', 'ml', 'data'}

Vollständige Referenz der Set-Methoden

MethodeBeschreibung
add(elem)Fügt elem zum Set hinzu; keine Wirkung, wenn bereits vorhanden.
clear()Entfernt alle Elemente und hinterlässt ein leeres Set.
copy()Gibt eine flache Kopie des Sets zurück.
difference(*others)Gibt ein neues Set mit Elementen zurück, die in keinem der others enthalten sind.
difference_update(*others)Entfernt alle in others gefundenen Elemente aus dem Set.
discard(elem)Entfernt elem, wenn vorhanden; kein Fehler, wenn nicht vorhanden.
intersection(*others)Gibt ein neues Set mit Elementen zurück, die im Set und in allen others vorkommen.
intersection_update(*others)Behält nur Elemente, die im Set und in allen others vorkommen.
isdisjoint(other)Gibt True zurück, wenn das Set und other keine gemeinsamen Elemente haben.
issubset(other)Gibt True zurück, wenn jedes Element des Sets in other enthalten ist.
issuperset(other)Gibt True zurück, wenn das Set jedes Element von other enthält.
pop()Entfernt und gibt ein beliebiges Element zurück; wirft KeyError, wenn leer.
remove(elem)Entfernt elem; wirft KeyError, wenn nicht vorhanden.
symmetric_difference(other)Gibt Elemente zurück, die in genau einem der beiden Sets vorkommen.
symmetric_difference_update(other)Aktualisiert das Set zur symmetrischen Differenz in place.
union(*others)Gibt ein neues Set mit allen Elementen aus dem Set und allen others zurück.
update(*others)Fügt alle Elemente aus others zum Set hinzu.

Übungsaufgaben

Übung
Which of the following are methods that can be used on sets in Python?
Which of the following are methods that can be used on sets in Python?
Was this page helpful?