W3docs

Set-Elemente entfernen

Elemente aus einem Python-Set entfernen mit discard(), remove(), pop(), clear() und difference_update() — mit Beispielen und Hinweisen zu Fallstricken.

Python-Sets sind veränderlich, sodass Sie jederzeit Elemente entfernen können. Die Sprache stellt mehrere Methoden zum Entfernen bereit — jede mit einem anderen Verhalten, wenn das Element fehlt oder wenn Sie mehr als ein Element auf einmal entfernen möchten. Die richtige Methode zu wählen verhindert Fehler und macht Ihre Absicht für Leser Ihres Codes klar.

Dieses Kapitel behandelt:

  • discard() — ein Element entfernen, kein Fehler wenn nicht vorhanden
  • remove() — ein Element entfernen, löst KeyError aus wenn nicht vorhanden
  • pop() — ein beliebiges Element entfernen und zurückgeben
  • clear() — alle Elemente entfernen und ein leeres Set hinterlassen
  • difference_update() — viele Elemente in einem Aufruf entfernen
  • Bedingtes Entfernen mit einer Schleife und mit Set-Comprehensions

Wenn Sie neu bei Sets sind, lesen Sie zuerst Python Sets. Um Elemente zu einem Set hinzuzufügen, siehe Set-Elemente hinzufügen.

Die Methode discard()

discard() entfernt das angegebene Element aus dem Set. Wenn das Element nicht vorhanden ist, tut die Methode nichts — es wird keine Ausnahme ausgelöst. Dies ist die sicherste Wahl, wenn Sie nicht sicher sind, ob das Element existiert.

Syntax

set.discard(element)
  • element — der zu entfernende Wert.
  • Rückgabewert: None. Das Set wird direkt verändert.

Ein vorhandenes Element entfernen

Ein Element entfernen, das im Set vorhanden ist

python— editable, runs on the server

Ein fehlendes Element zu entfernen ist sicher

fruits = {'apple', 'banana', 'cherry'}
fruits.discard('mango')   # 'mango' is not in the set
print(fruits)
# {'apple', 'banana', 'cherry'}   — unchanged, no error

Damit ist discard() ideal in Schleifen, in denen Sie nicht sicher sein können, dass jedes zu entfernende Element vorhanden ist.

Die Methode remove()

remove() entfernt ebenfalls ein einzelnes Element, löst jedoch einen KeyError aus, wenn das Element nicht gefunden wird. Verwenden Sie es, wenn das Element vorhanden sein muss — der Fehler dient als frühzeitige Warnung, dass etwas nicht stimmt.

Syntax

set.remove(element)
  • Rückgabewert: None. Das Set wird direkt verändert.

Ein vorhandenes Element entfernen

Ein Element aus einem Python-Set entfernen

python— editable, runs on the server

Der Versuch, ein fehlendes Element zu entfernen, löst KeyError aus

fruits = {'apple', 'banana', 'cherry'}
fruits.remove('mango')
# KeyError: 'mango'

Wenn Sie den Fehler vermeiden, aber trotzdem remove() verwenden möchten, sichern Sie den Aufruf mit einer in-Prüfung ab oder wechseln Sie zu discard():

element = 'mango'
if element in fruits:
    fruits.remove(element)

discard() vs remove() — Wesentliche Unterschiede

discard()remove()
Element vorhandenEntfernt esEntfernt es
Element fehltTut nichtsLöst KeyError aus
Verwenden wennEntfernen ist optionalElement muss vorhanden sein

Die Methode pop()

pop() entfernt ein beliebiges Element aus dem Set und gibt es zurück. Da Sets ungeordnet sind, können Sie nicht vorhersagen, welches Element entfernt wird — das hängt vom internen Hash-Tabellen-Layout ab, nicht von der Einfügereihenfolge.

Syntax

removed = set.pop()
  • Rückgabewert: das entfernte Element.
  • Löst KeyError aus, wenn das Set leer ist.

Ein Element aus einem Set in Python entfernen

python— editable, runs on the server

pop() auf einem leeren Set löst KeyError aus

empty = set()
empty.pop()
# KeyError: 'pop from an empty set'

Schützen Sie sich davor mit einer einfachen Längenprüfung:

if fruits:
    item = fruits.pop()

Wann pop() verwendet werden sollte

pop() ist nützlich, wenn Sie Elemente einzeln verarbeiten und verbrauchen müssen und die Reihenfolge keine Rolle spielt — zum Beispiel beim Leeren einer als Set gespeicherten Arbeitswarteschlange.

Die Methode clear()

clear() entfernt alle Elemente aus dem Set und hinterlässt es leer. Das Set-Objekt selbst bleibt bestehen; nur sein Inhalt ist weg.

Syntax

set.clear()
  • Rückgabewert: None.

Ein Set in Python leeren

python— editable, runs on the server

set() ist die Art, wie Python ein leeres Set anzeigt. Python kann {} nicht für ein leeres Set verwenden, da diese Notation bereits ein leeres Dictionary bedeutet.

Die Methode difference_update()

difference_update() entfernt jedes Element eines gegebenen Iterables aus dem Set in einem einzigen Aufruf. Sie ist das In-Place-Äquivalent des - (Differenz)-Operators.

Syntax

set.difference_update(iterable)
  • iterable — ein Set, eine Liste, ein Tupel oder ein anderes Iterable, dessen Elemente Sie entfernen möchten.
  • Elemente im Iterable, die nicht im Set vorhanden sind, werden stillschweigend ignoriert.
  • Rückgabewert: None. Das Set wird direkt verändert.

Mehrere Elemente auf einmal entfernen

numbers = {1, 2, 3, 4, 5}
numbers.difference_update({2, 4})
print(numbers)
# {1, 3, 5}

Vergleichen Sie dies mit dem Erstellen eines neuen Sets mit dem --Operator, der das Original unverändert lässt:

numbers = {1, 2, 3, 4, 5}
result = numbers - {2, 4}   # new set, 'numbers' is not modified
print(result)   # {1, 3, 5}
print(numbers)  # {1, 2, 3, 4, 5}

Verwenden Sie difference_update(), wenn Sie das vorhandene Set verändern möchten; verwenden Sie -, wenn Sie ein neues Set benötigen und das Original erhalten wollen.

Mehrere Elemente mit einer Schleife entfernen

Wenn die zu entfernenden Elemente nicht im Voraus bekannt sind, sammeln Sie sie zuerst und rufen Sie dann discard() in einer Schleife auf. Modifizieren Sie ein Set nicht, während Sie darüber iterieren — das löst einen RuntimeError aus.

Korrektes Muster — zuerst Kandidaten sammeln, dann entfernen

fruits = {'apple', 'banana', 'cherry', 'avocado'}

# Step 1: collect elements to remove (do NOT modify the set here)
to_remove = [item for item in fruits if item.startswith('a')]

# Step 2: remove them
for item in to_remove:
    fruits.discard(item)

print(fruits)
# {'banana', 'cherry'}

Filtern mit einer Set-Comprehension

Wenn Sie nur die Elemente behalten möchten, die eine Bedingung erfüllen, erzeugt eine Set-Comprehension ein neues Set und lässt das Original unverändert:

Nur gerade Zahlen behalten

nums = {1, 2, 3, 4, 5, 6}
evens = {x for x in nums if x % 2 == 0}
print(evens)
# {2, 4, 6}

Dies ist vorzuziehen, wenn Sie das ursprüngliche Set erhalten oder das Ergebnis einer neuen Variablen zuweisen müssen. Bei großen Sets ist es auch etwas lesbarer als das direkte Verändern.

Weitere Iterationsmuster über Sets finden Sie unter Sets durchlaufen.

Methoden-Kurzübersicht

MethodeEntferntFehlendes ElementGibt zurück
discard(x)Element xIgnoriertNone
remove(x)Element xKeyErrorNone
pop()Beliebiges ElementKeyError (wenn leer)Entferntes Element
clear()Alle Elementen/aNone
difference_update(it)Alle Elemente in itIgnoriertNone

Eine vollständige Referenz aller Set-Methoden finden Sie unter Set-Methoden. Informationen zum Iterieren über ein Set finden Sie unter Sets durchlaufen.

Übungen

Übung
Which of the following methods can be used to remove items from a set in Python?
Which of the following methods can be used to remove items from a set in Python?
Was this page helpful?