Erklärung zur Lektion
Nach dieser Lektion kannst du:
Eine Menge (Set) speichert eindeutige Werte. Doppelte Einträge fallen zu einem Element zusammen, deshalb sind Mengen nützlich für Tags, Berechtigungen und die Suche nach fehlenden Kennungen. Mengen haben keine aussagekräftigen Positionen: Verlass dich nie auf die Iterationsreihenfolge und versuche nicht, items[0] aus einer Menge zu lesen.
Verwende {value1, value2}, um eine nicht leere Menge zu erstellen, und set() für eine leere Menge ({} erzeugt ein leeres Dictionary). add(value) fügt einen Wert ein. discard(value) entfernt einen Wert, falls er vorhanden ist, und tut nichts, wenn er fehlt; anders als remove(value) löst es keinen Fehler aus, wenn der Wert nicht vorhanden ist.
Die Zugehörigkeit prüfst du mit value in items. Mengenoperationen beantworten nützliche Fragen: a | b kombiniert alle eindeutigen Werte; a & b findet gemeinsame Werte; a - b behält Werte, die nur in a vorkommen. Diese Operationen geben neue Mengen zurück, statt die Operanden zu verändern.
Die wiederholte Kennung zählt als ein einziges Mitglied.
regions = {"us", "eu", "us"}
print(len(regions))
print("eu" in regions)Ausgabe:
2
Truediscard() ist auch dann sicher, wenn der Wert bereits fehlt.
roles = {"reader"}
roles.add("editor")
roles.discard("owner")
print(len(roles))
print("editor" in roles)Ausgabe:
2
TrueDie Schnittmenge zählt gemeinsame Werte; die Vereinigung zählt alles, was in einer der beiden Mengen vorkommt.
online = {"api", "worker", "cache"}
monitored = {"cache", "mailer"}
print(len(online & monitored))
print(len(online | monitored))Ausgabe:
1
4Die Differenz behält die Werte, die nicht gewährt wurden.
required = {"read", "write", "deploy"}
granted = {"read", "deploy"}
print(len(required - granted))Ausgabe:
1| Bedarf | Operation |
|---|---|
| Leere Menge | set() |
| Einen Wert hinzufügen | items.add(value) |
| Sicher entfernen | items.discard(value) |
| Zugehörigkeit prüfen | value in items |
| Eindeutige Elemente kombinieren | `a |
| Gemeinsame Elemente | a & b |
| Nur links vorhandene Elemente | a - b |
{} ist ein leeres Dictionary, keine leere Menge.append() gehört zu Listen, nicht zu Mengen.remove() löst bei einem nicht vorhandenen Element KeyError aus; verwende discard(), wenn das Fehlen akzeptabel ist.a - b ist nicht dasselbe wie b - a.