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 removedBeachte, 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
Die Ausgabe könnte lauten:
banana
cherry
appleDie 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
cherryVerwende 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 cherryDies 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
88break 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}')
breakAusgabe:
First score at 90 or above: 91Ein 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 deniedDieses 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
Ausgabe:
Intersection:
3
4
Difference (set1 - set2):
1
2
Symmetric difference:
1
2
5
6Weitere 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 einerwhile-Schleife.- Set-Comprehensions
{expr for item in iterable}sind der idiomatische Weg, ein gefiltertes oder transformiertes Set in einer Zeile zu erstellen.
Verwandte Themen
- Python Sets — Elemente erstellen, hinzufügen und entfernen
- Add Set Items —
add()- undupdate()-Methoden - Remove Set Items —
remove(),discard()undpop() - Join Sets — Vereinigung, Schnittmenge, Differenz und mehr
- Set Methods — vollständige Referenz aller Set-Methoden
- Python For Loops — die
for-Schleife im Detail - Loop Lists — über Listen iterieren
- Loop Tuples — über Tupel iterieren
- Loop Dictionaries — über Dictionaries iterieren