Lesson 10
Sätze
1. Was ist ein Set?
In Python ist eine Datenstruktur festgelegt, die den Mengen in Mathematik entspricht. Es kann aus verschiedenen Elementen bestehen; Die Reihenfolge der Elemente in einer Menge ist nicht definiert. Sie können Elemente einer Menge hinzufügen und löschen, Sie können die Elemente der Menge iterieren, Sie können Standardoperationen für Mengen durchführen (Vereinigung, Schnittmenge, Differenz). Außerdem können Sie überprüfen, ob ein Element zu einem Set gehört.
Im Gegensatz zu Arrays, bei denen die Elemente als geordnete Liste gespeichert werden, ist die Reihenfolge der Elemente in einem Set undefiniert (darüber hinaus werden die Set-Elemente normalerweise nicht in der Reihenfolge ihres Erscheinens im Set gespeichert; dies ermöglicht es, zu überprüfen, ob ein Element schneller zu einem Set gehört als nur durch alle Elemente des Sets gehen).
Jeder unveränderliche Datentyp kann ein Element einer Menge sein: eine Zahl, eine Zeichenfolge, ein Tupel. Veränderbare (änderbare) Datentypen können keine Elemente der Menge sein. Insbesondere kann list kein Element einer Menge sein (aber Tupel kann), und eine andere Menge kann kein Element einer Menge sein. Die Anforderung der Unveränderlichkeit ergibt sich aus der Art und Weise, wie Computer Sätze im Speicher darstellen.
2. Wie definiere ich einen Satz?
Sie können einen Satz so einfach definieren, wie Sie alle seine Elemente in Klammern benennen. Die einzige Ausnahme ist die leere Menge , die mit der Funktion set()
. Wenn set(..)
eine Liste, eine Zeichenfolge oder ein Tupel als Parameter enthält, gibt es eine Menge zurück, die aus ihren Elementen besteht. Beispielsweise,
A = {1, 2, 3} A = set('qwerty') print(A)
wird {'e', 'q', 'r', 't', 'w', 'y'}
als Ausgabe ausgeben.
Die Reihenfolge der Elemente ist unwichtig. Zum Beispiel das Programm
A = {1, 2, 3} B = {3, 2, 3, 1} print(A == B)
wird True
, weil A
und B
gleich sind.
Jedes Element darf das Set nur einmal eingeben. set('Hello')
gibt den Satz von vier Elementen zurück: {'H', 'e', 'l', 'o'}
.
3. Operationen mit Elementen
Mit der Funktion len
erhalten Sie die Anzahl der Elemente im Set.
Sie können auch über alle Elemente der Menge (in einer undefinierten Reihenfolge!) Iterieren, indem Sie die Schleife for
Folgendes verwenden:
primes = {2, 3, 5, 7, 11} for num in primes: print(num)
Mit dem Schlüsselwort in
können Sie prüfen, ob ein Element zu einer Menge gehört: Ausdrücke wie a in A
geben einen Wert vom Typ bool
. In ähnlicher Weise gibt es die umgekehrte Operation not in
. Um der Menge ein Element hinzuzufügen, gibt es die Methode add
:
A = {1, 2, 3} print(1 in A, 4 not in A) A.add(4)
Es gibt zwei Methoden, um ein Element aus einer Menge zu entfernen: discard
und remove
. Ihr Verhalten ist nur dann unterschiedlich, wenn der gelöschte Gegenstand nicht im Set war. In diesem Fall wird das Verfahren discard
tut nichts , und das Verfahren remove
wirft Ausnahme KeyError
.
Schließlich entfernt pop
ein zufälliges Element aus der Menge und gibt seinen Wert zurück. Wenn das Set leer ist, erzeugt pop
die Ausnahme KeyError
.
Sie können einen Satz mithilfe der Funktionsliste in eine list
umwandeln.
4. Operationen an Sets
So führen Sie die bekannten Operationen für Mengen in Python aus:
A | B A.union (B) | Gibt eine Menge zurück, die die Vereinigung der Mengen A und B . |
A | = B A.update (B) | Fügt alle Elemente von Array B zur Menge A . |
A & B A.Überschnitt (B) | Gibt eine Menge zurück, die die Schnittmenge der Mengen A und B . |
A & = B A. Überschneidung_aktualisieren (B) | Blätter in der Menge A nur Elemente, die zu der Menge B . |
A - B A. Unterschied (B) | Gibt den Satzunterschied von A und B (die Elemente, die in A , aber nicht in B ). |
A - = B A.Differenz_Update (B) | Entfernt alle Elemente von B aus der Menge A |
A ^ B A.symmetrische_Differenz (B) | Gibt die symmetrische Differenz der Mengen A und B (die Elemente, die entweder zu A oder B , aber nicht zu beiden Mengen gleichzeitig). |
A ^ = B A.symmetrische_Differenz_Update (B) | Schreibt in A die symmetrische Differenz der Mengen A und B |
A <= B A.Subset (B) | Gibt true wenn A eine Teilmenge von B . |
A> = B A.issuperset (B) | Gibt true wenn B eine Teilmenge von A . |
A <B | Äquivalent zu A <= B and A != B |
A> B | Entspricht A >= B and A != B |