W3docs

Sets durchlaufen

Lerne, wie du Python-Sets mit for-Schleifen, while-Schleifen, enumerate, break, continue und Set-Comprehensions iterierst – mit klaren Beispielen.

Python-Sets sind ungeordnete Sammlungen eindeutiger Elemente. Da sie ungeordnet sind, kannst du nicht per Index auf Elemente zugreifen — aber du kannst mit einer for-Schleife über jedes Element iterieren, mit while-Schleifen ein Set verarbeiten und Set-Operationen innerhalb von Schleifen einsetzen, um gängige Datenprobleme zu lösen.

Diese Seite erklärt, wie du Sets in Python durchläufst, einschließlich deterministischer Iteration mit sorted(), enumerate(), Filterung mit break und continue, Set-Comprehensions und praktischen Anwendungsfällen.

Ein Set erstellen

Bevor du eine Schleife verwendest, benötigst du ein Set. Du kannst eines mit geschweiften Klammern {} oder mit der eingebauten Funktion set() erstellen. Eine vollständige Einführung findest du unter Python Sets.

Ein Set in Python erstellen

# Using curly braces
fruits = {'apple', 'banana', 'cherry'}

# Using set() — useful when converting another sequence
numbers = set([1, 2, 2, 3, 4, 4, 5])
print(numbers)   # {1, 2, 3, 4, 5}  — duplicates are removed

Beachte, dass set() bei einer Liste automatisch Duplikate entfernt. Die Ausgabereihenfolge ist nicht garantiert.

Ein Set mit einer For-Schleife durchlaufen

Der häufigste Weg, ein Set zu iterieren, ist eine for-Schleife. Python besucht jedes Element genau einmal, jedoch in einer beliebigen Reihenfolge.

Über ein Set in Python iterieren

python— editable, runs on the server

Die Ausgabe könnte lauten:

banana
cherry
apple

Die Reihenfolge kann bei jedem Programmaufruf unterschiedlich sein. Wenn du eine vorhersehbare Reihenfolge benötigst, übergib das Set an sorted().

In sortierter Reihenfolge iterieren

sorted() gibt eine reguläre Liste zurück, die die Elemente des Sets in aufsteigender Reihenfolge enthält. Das ursprüngliche Set bleibt unverändert.

Ein Set in sortierter Reihenfolge durchlaufen

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

for fruit in sorted(fruits):
    print(fruit)

Ausgabe:

apple
banana
cherry

Verwende sorted(my_set, reverse=True), um in absteigender Reihenfolge zu iterieren.

enumerate() mit einem Set verwenden

enumerate() verknüpft jedes Element mit einem Zähler. In Kombination mit sorted() erhältst du einen stabilen Index neben jedem Element.

Ein Set in Python mit enumerate durchlaufen

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

for index, fruit in enumerate(sorted(fruits)):
    print(index, fruit)

Ausgabe:

0 apple
1 banana
2 cherry

Dies ist nützlich, wenn du Elemente in einem Bericht nummerieren oder in einer Datenpipeline beschriften möchtest.

Schleifen mit break und continue

Du kannst break verwenden, um die Schleife vorzeitig zu beenden, und continue, um bestimmte Elemente zu überspringen.

continue verwenden, um Elemente zu überspringen

Elemente beim Durchlaufen eines Sets überspringen

scores = {55, 72, 88, 64}

for score in sorted(scores):
    if score < 60:
        continue       # skip failing scores
    print(score)

Ausgabe:

64
72
88

break verwenden, um früh zu stoppen

Eine Schleife mit break vorzeitig beenden

scores = {55, 72, 88, 91, 64}

for score in sorted(scores):
    if score >= 90:
        print(f'First score at 90 or above: {score}')
        break

Ausgabe:

First score at 90 or above: 91

Ein Set mit einer While-Schleife durchlaufen

Eine while-Schleife in Kombination mit pop() ermöglicht es dir, ein Set Element für Element zu verarbeiten und zu leeren. Dieses Muster eignet sich, wenn du das Set beim Durchlaufen entleeren möchtest (zum Beispiel als Aufgabenwarteschlange).

Eine while-Schleife verwenden, um ein Set zu leeren

tasks = {'send email', 'write report', 'update database'}

while tasks:
    task = tasks.pop()   # removes and returns an arbitrary element
    print(f'Processing: {task}')

print('All tasks done.')

Ausgabe (Reihenfolge variiert):

Processing: update database
Processing: write report
Processing: send email
All tasks done.

Nach der Schleife ist tasks leer. Wenn du das ursprüngliche Set erhalten möchtest, arbeite auf einer Kopie: tasks.copy().

Zugehörigkeitsprüfung innerhalb einer Schleife

Eine der größten Stärken von Sets ist die O(1)-Zugehörigkeitsprüfung. Die Überprüfung item in my_set ist bei großen Sammlungen deutlich schneller als item in my_list, da Sets intern eine Hash-Tabelle verwenden.

Eine Liste mithilfe eines Sets für schnelle Suchen filtern

allowed_roles = {'admin', 'editor', 'viewer'}
users = ['admin', 'guest', 'editor', 'unknown']

for user in users:
    if user in allowed_roles:
        print(f'{user}: access granted')
    else:
        print(f'{user}: access denied')

Ausgabe:

admin: access granted
guest: access denied
editor: access granted
unknown: access denied

Dieses Muster ist häufig bei Berechtigungsprüfungen, Sperrlisten und Datenfilterung anzutreffen.

Duplikate aus einer Liste entfernen

Das Konvertieren einer Liste in ein Set innerhalb einer Schleife ist ein schneller Weg, sicherzustellen, dass jeder eindeutige Wert nur einmal verarbeitet wird.

Duplikate aus einer Liste mithilfe eines Sets entfernen

my_list = [1, 2, 2, 3, 4, 4, 5]
unique_values = set(my_list)   # duplicates removed

for value in sorted(unique_values):
    print(value)

Ausgabe:

1
2
3
4
5

Über Set-Operationen schleifen

Du kannst direkt über das Ergebnis einer Set-Operation iterieren — Vereinigung, Schnittmenge, Differenz — ohne eine Zwischenvariable zu erstellen.

Über Set-Operationen in Python schleifen

python— editable, runs on the server

Ausgabe:

Intersection:
3
4
Difference (set1 - set2):
1
2
Symmetric difference:
1
2
5
6

Weitere Informationen zur Kombination von Sets findest du unter Join Sets und unter Set Methods für die vollständige Liste der Operationen.

Set-Comprehensions

Eine Set-Comprehension erstellt in einer einzigen Zeile ein neues Set aus einem Ausdruck. Die Syntax ähnelt List-Comprehensions, verwendet aber geschweifte Klammern.

Ein Set mit einer Set-Comprehension erstellen

# Squares of numbers 1 through 5
squares = {x**2 for x in range(1, 6)}
print(sorted(squares))

Ausgabe:

[1, 4, 9, 16, 25]

Du kannst eine Bedingung hinzufügen, um Elemente zu filtern:

Set-Comprehension mit einem Filter

numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
evens = {n for n in numbers if n % 2 == 0}
print(sorted(evens))

Ausgabe:

[2, 4, 6, 8, 10]

Set-Comprehensions sind kompakter als eine for-Schleife, die .add() im Körper aufruft, und vermitteln die Absicht klar. Für List-Äquivalente siehe List Comprehension.

Wichtige Erkenntnisse

  • Sets sind ungeordnet — verlasse dich nicht auf die Iterationsreihenfolge. Verwende sorted(), wenn eine stabile Reihenfolge wichtig ist.
  • Sets enthalten eindeutige Elemente — bei der Iteration werden Duplikate automatisch übersprungen.
  • in-Zugehörigkeitsprüfungen bei Sets sind O(1) — deutlich schneller als bei Listen für große Datenmengen.
  • pop() entfernt ein beliebiges Element und eignet sich zum Leeren eines Sets in einer while-Schleife.
  • Set-Comprehensions {expr for item in iterable} sind der idiomatische Weg, ein gefiltertes oder transformiertes Set in einer Zeile zu erstellen.

Verwandte Themen

Übungen

Übung
Which of the following is true about loop sets in Python?
Which of the following is true about loop sets in Python?
Was this page helpful?