Pythons Menge ähnelt anderen Sprachen. Es handelt sich um eine ungeordnete Menge sich nicht wiederholender Elemente. Zu seinen Grundfunktionen gehören Beziehungstests und die Eliminierung doppelter Elemente (symmetrische Differenzmenge).
sets unterstützt x in set, len(set) und for x in set. Da es sich um eine ungeordnete Sammlung handelt, zeichnen Sets keine Elementpositionen oder Einfügepunkte auf. Daher unterstützen Sets keine Indizierung, Slicing oder andere sequenzähnliche Vorgänge.
Hier ist ein einfaches Beispiel zur Veranschaulichung.
>>> x = set('spam')
>>> y = set(['h','a','m'])
>>> x, y
(set(['a', 'p', 's', 'm']), set(['a', 'h', 'm']) )
Einige weitere kleine Anwendungen.
>>> x & y # Schnittpunkt
set(['a', 'm'])
>>> x | y # Union
set(['a', 'p', 's', 'h', 'm'])
>>> x - y # Differenz set
set( [ 'p', 's'])
Ich erinnere mich, dass ein Internetnutzer gefragt hat, wie man doppelte Elemente aus einer riesigen Liste entfernen kann, aber ich habe das Gefühl, dass die Leistung nicht sehr hoch ist Es ist besser, set zu verwenden, um es zu lösen. Sehr gut, das Beispiel ist wie folgt:
>>> a = [11,22,33,44,11,22]
>> > b = set(a)
>>> b
set([33, 11, 44, 22])
>>> c = [i für i in b]
>>> > c
[33, 11, 44, 22]
Es ist cool, man kann es in nur wenigen Zeilen machen.
1.8 Sammlungen
Sammlungen werden verwendet, um eine Gruppe ungeordneter Objekte zu enthalten. Um einen Satz zu erstellen, verwenden Sie die Funktion set() und stellen Sie eine Reihe von Elementen wie folgt bereit:
s = set([3,5,9,10]) #Erstellen Sie einen numerischen Satz
t = set("Hallo") #Erstellen Sie einen Satz eindeutiger Zeichen
Im Gegensatz zu Listen und Tupeln sind Sätze ungeordnet und können nicht numerisch indiziert werden. Darüber hinaus können Elemente in der Sammlung nicht wiederholt werden. Wenn Sie beispielsweise den Wert des t-Sets im vorherigen Code überprüfen, lautet das Ergebnis:
>>> t
set(['H', 'e', 'l', 'o' ])
Beachten Sie, dass nur ein „l“ vorkommt.
Set unterstützt eine Reihe von Standardoperationen, einschließlich Vereinigung, Schnittmenge, Differenz und symmetrische Differenz, zum Beispiel:
a = t |. # Die Vereinigung von t und s
b = t & # Der Schnittpunkt von t und s
c = t – s # Finden Sie die Differenzmenge (der Term liegt in t, aber nicht in s)
d = t ^ s # Symmetrischer Differenzsatz (Element ist in t oder s, aber nicht in beiden gleichzeitig)
Grundoperation:
t.add( 'x') #Ein Element hinzufügen
s.update([10,37,42]) #Mehrere Elemente in s hinzufügen
Verwenden Sie Remove(), um ein Element zu löschen:
t.remove('H')
len(s)
Die Länge der Menge
x in s
Testen Sie, ob x ist Mitglied von s
x nicht in s
Testen Sie, ob x kein Mitglied von s ist
s.issubset(t)
s
Testen Sie, ob jedes Element in s in t ist
s.issuperset(t)
s >= t
Testen Sie, ob jedes Element in t An Element ist in s
s.union(t)
s |.
Gibt eine neue Menge zurück, die jedes Element in s und t enthält
s. Kreuzung(t)
s & t
Gibt eine neue Menge zurück, die gemeinsame Elemente in s und t enthält
s.difference(t)
s - t
gibt eine neue Menge zurück, die Elemente enthält, die in s, aber nicht in t sind
s.symmetric_difference(t)
s ^ t
Gibt a zurück neuer Satz mit eindeutigen Elementen in s und t
s.copy()
Gibt eine flache Kopie des Satzes „s“ zurück
Bitte beachten Sie: Der Nicht-Operator (d. h. , so etwas wie s.union()-Versionen von Union(), Intersection(), Difference() und symmetric_difference() akzeptieren jede Iterable als Argument. Im Gegensatz dazu erfordern ihre Operator-basierten Gegenstücke, dass die Argumente festgelegt werden müssen. Dies vermeidet potenzielle Fehler wie die Verwendung von set('abc') & 'cbs' anstelle von set('abc').intersection('cbs') für eine bessere Lesbarkeit. Änderungen gegenüber Version 2.3.1: Bisher mussten alle Parameter eingestellt werden.
Darüber hinaus unterstützen sowohl Set als auch ImmutableSet Vergleiche zwischen Sätzen. Zwei Mengen sind genau dann gleich: Die Elemente in jeder Menge sind Elemente in der anderen (sie sind die Teilmenge des jeweils anderen). Eine Menge ist nur dann kleiner als eine andere Menge, wenn die erste Menge eine Teilmenge der zweiten Menge ist (eine Teilmenge, aber nicht gleich). Eine Menge ist nur dann stärker als eine andere Menge, wenn die erste Menge eine Obermenge der zweiten Menge ist (eine Obermenge, aber nicht gleich).
Teilmengen und Gleichheitsvergleiche führen nicht zur vollständigen Sortierfunktionalität. Beispiel: Zwei beliebige Mengen sind weder gleich noch Teilmengen voneinander, sodass die folgenden Operationen „Falsch“ zurückgeben: ab. Daher bietet „sets“ keine __cmp__-Methode.
Da Sets nur einen Teil der Sortierfunktion (Teilmengenbeziehung) definieren, ist die Ausgabe der list.sort()-Methode nicht für die Liste der Sets definiert.
Operator
Operationsergebnis
Hash(s)
Gibt den Hashwert von s zurück
In der folgenden Tabelle sind die Operationen aufgeführt, die für Set, aber nicht für ImmutableSet verfügbar sind:
Operator (voperator)
entspricht dem
Operationsergebnis
s.update(t)
s |= t
Gibt den Satz „s“ zurück, nachdem Elemente im Satz „t“ hinzugefügt wurden
s.intersection_update (t )
s &= t
Gibt nur die Menge „s“ zurück, die Elemente in der Menge „t“ enthält
s.difference_update(t)
s - = t
Gibt den Satz „s“ zurück
s.symmetric_difference_update(t)
s ^= nach dem Löschen der im Satz „t“ enthaltenen Elemente t
Gibt die Menge „s“ zurück
s.add(x)
Element x zur Menge „s“ hinzufügens.remove(x)Element x aus der Menge „s“ entfernen, wenn es nicht existiert, wird KeyError ausgelösts.discard(x)Wenn Element x in der Menge „s“ vorhanden ist, löschen Sie s.pop()Löschen und zur Menge „s“ zurückkehren. Ein unbestimmtes Element, wenn es leer ist, KeyError wird ausgelöst. Die symbolischen Versionen von update(), Kreuzungsupdate(), Differenz_Update() und Symmetrischer_Differenz_Update() akzeptieren jedes Iterable als Argument. Änderungen gegenüber Version 2.3.1: Bisher mussten alle Parameter eingestellt werden. Beachten Sie außerdem: Dieses Modul enthält auch eine Union_update()-Methode, die ein Alias der update()-Methode ist. Diese Methode ist aus Gründen der Abwärtskompatibilität enthalten. Programmierer sollten die update()-Methode häufiger verwenden, da diese Methode auch von den integrierten Typen set() und Frozenset() unterstützt wird.