Sets in Python: Ein vollständiger Leitfaden mit Codebeispielen

In diesem Tutorial lernen Sie die Grundlagen von Python-Sets und die verschiedenen Set-Methoden, mit denen Sie Python-Sets ändern können.
Sätze sind eine der eingebauten Datenstrukturen in Python. Wenn Sie mit einer sich nicht wiederholenden Sammlung von Elementen arbeiten müssen, verwenden Sie die Menge als Einstiegsdatenstruktur.
In den folgenden Abschnitten gehen wir auf die Grundlagen von Python-Sets und die Set-Methoden ein, die Sie verwenden können, um mit ihnen zu arbeiten. Wir werden dann lernen, wie man allgemeine Mengenoperationen in Python durchführt.
Lassen Sie uns beginnen!
Grundlagen von Python-Sets
In Python ist ein Set eine ungeordnete Sammlung sich nicht wiederholender Elemente. Dies bedeutet, dass die Elemente in einer Menge alle sein sollten deutlich.
Sie können Elemente zu einem Satz hinzufügen und daraus entfernen; daher ist die Menge a veränderliche Sammlung. Es kann Elemente verschiedener Datentypen enthalten. Allerdings sollten die einzelnen Elemente in einem Satz sein hashbar.
In Python wird ein Objekt als hashfähig bezeichnet, wenn sich sein Hashwert nie ändert. Die meisten unveränderlichen Objekte wie z Python-Strings, Tupel und Wörterbücher sind hashbar.
Wir lernen das Erstellen von Sets im Detail. Betrachten Sie zunächst die folgenden zwei Sätze:
py_set = {0,1,2,(2,3,4),'Cool!'}
py_set = {0,1,2,[2,3,4],'Oops!'}
# Output
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-40-2d3716c7fe01> in <module>()
----> 1 py_set = {0,1,2,[2,3,4],'Oops!'}
TypeError: unhashable type: 'list'
The first set contains three numbers, a tuple, and a string. The set initialization runs without error. Whereas the second set contains a list instead of a tuple. A list is a mutable collection, it cannot be hashed, and the initialization throws a TypeError
.
📑 Alles zusammengenommen können wir ein Python-Set als definieren veränderlich Sammlung von deutlich und hashbar Elemente.
Wie man Create ein Python-Set
Wir beginnen damit, zu lernen, wie man erstelltate ein Satz in Python.
# 1. Explizite Initialisierung verwenden
Sie können erstellenate eine Menge in Python durch Angabe der Elemente der Menge, separated durch Kommas (,
) und in geschweiften Klammern eingeschlossen {}
.
py_set1 = {'Python','C','C++','JavaScript'}
type(py_set1)
# Output
set
Wenn Sie mit gearbeitet haben Python-Listen früher, das weißt du []
initialisiert eine leere Liste. Obwohl ein Python-Set in geschweiften Klammern eingeschlossen ist {}
Sie kann keine Verwenden Sie ein Paar {}
um einen Satz zu initialisieren. Das ist weil {} it
initialisiert a Python-Wörterbuch und kein Python-Set.
py_set2 = {}
type(py_set2)
# Output
dict
Sie können die erneut anrufen type()
Funktion, um dies zu überprüfen py_set
Es ist ein Wörterbuch (dict
).
# 2. Verwenden der set()-Funktion
Wenn Sie eine leere Menge initialisieren und ihr dann Elemente hinzufügen möchten, können Sie dies mit dem tun set()
Funktion.
py_set3 = set()
type(py_set3)
# Output
set
# 3. Casting anderer Iterables in ein Set
Eine andere Möglichkeit, Create Sets besteht darin, andere iterierbare Elemente wie Listen und Tupel mithilfe von in Sets umzuwandeln set(iterable)
.
py_list = ['Python','C','C++','JavaScript','C']
py_set4 = set(py_list)
print(py_set4)
# {'C++', 'C', 'JavaScript', 'Python'} # repeating element 'C' removed
type(py_set4)
# set
Im obigen Beispiel enthält py_list zweimal „C“. Aber in py_set4 erscheint 'C' nur einmal, da die Menge eine Sammlung unterschiedlicher Elemente ist. Diese Technik des Einwerfens in das Set ist oft gewöhnungsbedürftig Duplikat entfernenates aus Python-Listen.
So fügen Sie Elemente zu einem Python-Set hinzu
Beginnen wir mit der Erstellung eines leeren Satzes py_set
und arbeiten Sie für den Rest dieses Tutorials damit.
py_set = set()
len(py_set) # returns the length of a set
# Output
0
# 1. Verwenden der .add() Methode
Um Elemente zu einem Satz hinzuzufügen, können Sie die verwenden
.add()
Methode.set.add(element)
fügt der Menge ein Element hinzu.
Zur Verdeutlichung fügen wir dem Python-Set Elemente hinzu und drucken das Set bei jedem Schritt aus.
▶️ Fügen wir den String „Python“ als Element hinzu py_set
.
py_set.add('Python')
print(py_set)
# Output
{'Python'}
Als Nächstes fügen wir ein weiteres Element hinzu.
py_set.add('C++')
print(py_set)
# Output
{'Python', 'C++'}
Es ist wichtig zu verstehen, dass die .add()
-Methode fügt der Menge nur dann ein Element hinzu, wenn es noch nicht vorhanden ist. Wenn der Satz das Element, das Sie hinzufügen möchten, bereits enthält, hat die Hinzufügungsoperation keine Auswirkung.
Um dies zu überprüfen, versuchen wir, „C++“ hinzuzufügen py_set
.
py_set.add('C++')
print(py_set)
# Output
{'Python', 'C++'}
Das Set enthält 'C++', daher hat die Additionsoperation keine Auswirkung.
▶️ Fügen wir dem Set noch ein paar Elemente hinzu.
py_set.add('C')
print(py_set)
py_set.add('JavaScript')
print(py_set)
py_set.add('Rust')
print(py_set)
# Output
{'Python', 'C++', 'C'}
{'JavaScript', 'Python', 'C++', 'C'}
{'Rust', 'JavaScript', 'Python', 'C++', 'C'}
# 2. Verwenden der .update() Methode
Bisher haben wir gesehen, wie man Elemente zu einer bestehenden Menge hinzufügt – ein Element nach dem anderen.
Was ist, wenn Sie einer Folge von Elementen mehr als ein Element hinzufügen möchten?
Sie können dies tun, indem Sie die
.update()
Methode mit der Syntax:set.update(collection)
um Elemente hinzuzufügencollection
zu einem Satz. Dascollection
kann eine Liste, ein Tupel, ein Wörterbuch usw. sein.
py_set.update(['Julia','Ruby','Scala','Java'])
print(py_set)
# Output
{'C', 'C++', 'Java', 'JavaScript', 'Julia', 'Python', 'Ruby', 'Rust', 'Scala'}
Diese Methode ist hilfreich, wenn Sie einer Menge eine Sammlung von Elementen hinzufügen möchten, ohne ein weiteres Objekt im Speicher zu erstellen.
Im nächsten Abschnitt erfahren Sie, wie Sie Elemente aus einer Menge entfernen.
Elemente aus einem Python-Set entfernen
Betrachten wir die folgende Menge (py_set
vor dem Updateate Operation).
py_set = {'C++', 'JavaScript', 'Python', 'Rust', 'C'}
# 1. Verwenden der .pop()-Methode
set.pop()
entfernt ein Element zufällig aus der Menge und gibt es zurück. Rufen wir die Pop-Methode auf py_set
und sehen, was es zurückgibt.
py_set.pop()
# Output
'Rust'
Diesmal der Aufruf an .pop()
-Methode hat die Zeichenfolge „Rust“ zurückgegeben.
Hinweis: Weil das .pop()
-Methode gibt ein zufälliges Element zurück, wenn Sie den Code an Ihrem Ende ausführen, können Sie genauso gut ein anderes Element erhalten.
Wenn wir das Set untersuchen, ist „Rost“ nicht mehr im Set vorhanden.
print(py_set)
# Output
{'JavaScript', 'Python', 'C++', 'C'}
# 2. Verwenden der Methoden .remove() und discard()
In der Praxis möchten Sie möglicherweise bestimmte Elemente aus dem Satz entfernen. Dazu können Sie die verwenden .remove()
und .discard()
Methoden.
set.remove(element)
entfernt Elemente aus der Menge.
py_set.remove('C')
print(py_set)
# Output
{'JavaScript', 'Python', 'C++'}
Wenn wir versuchen, ein Element zu entfernen, das nicht in der Menge vorhanden ist, stoßen wir auf einen KeyError.
py_set.remove('Scala')
# Output
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-58-a1abab3a8892> in <module>()
----> 1 py_set.remove('Scala')
KeyError: 'Scala'
Lassen Sie uns einen Blick darauf werfen py_set
es wieder. Wir haben jetzt drei Elemente.
print(py_set)
# Output
{'JavaScript', 'Python', 'C++'}
Mit der Syntax set.discard(element)
, der .discard()
-Methode entfernt auch Elemente aus der Menge.
py_set.discard('C++')
print(py_set)
# Output
{'JavaScript', 'Python'}
Es unterscheidet sich jedoch von der .remove()
Methode, dass es tut nicht erhöhe einen KeyError
wenn wir versuchen, ein nicht vorhandenes Element zu entfernen.
Wenn wir versuchen, 'Scala' (das nicht existiert) aus der Liste zu entfernen, indem wir die .discard()
Methode sehen wir keinen Fehler.
py_set.discard('Scala') #no error!
print(py_set)
# Output
{'JavaScript', 'Python'}
Greifen Sie auf Elemente eines Python-Sets zu
Bisher haben wir gelernt, wie man Elemente aus Python-Sets hinzufügt und entfernt. Wir haben jedoch noch nicht gesehen, wie man auf einzelne Elemente in einem Set zugreift.
Da ein Set eine ungeordnete Sammlung ist, kann es nicht indiziert werden. Wenn Sie also versuchen, über den Index auf die Elemente einer Menge zuzugreifen, werden Sie wie gezeigt auf einen Fehler stoßen.
py_set = {'C++', 'JavaScript', 'Python', 'Rust', 'C'}
print(py_set[0])
# Output
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-27-0329274f4580> in <module>()
----> 1 print(py_set[0])
TypeError: 'set' object is not subscriptable
Wie greifen Sie also auf Elemente in einer Menge zu?
Dazu gibt es zwei gängige Methoden:
- Durchlaufen Sie das Set und greifen Sie auf jedes Element zu
- Überprüfen Sie, ob ein bestimmtes Element ein Mitglied der Menge ist
▶️ Durchlaufen Sie das Set und greifen Sie mit a auf Elemente zu for
Schleife.
for elt in py_set:
print(elt)
# Output
C++
JavaScript
Python
Rust
C
In der Praxis möchten Sie vielleicht überprüfen, ob ein bestimmtes Element in der Menge vorhanden ist, indem Sie die verwenden in
Betreiber.
Hinweis: Element
in
kompensieren RückgabeTrue
wenn Element im Satz vorhanden ist; sonst kehrt es zurückFalse
.
In diesem Beispiel py_set
enthält 'C++' und enthält nicht 'Julia' und die in
Operator kehrt zurück True
und False
, Bzw.
'C++' in py_set
# True
'Julia' in py_set
# False
Finden Sie die Länge eines Python-Sets
Wie bereits erwähnt, können Sie die verwenden len()
Funktion, um die Anzahl der in einer Menge vorhandenen Elemente zu erhalten.
py_set = {'C++', 'JavaScript', 'Python', 'Rust', 'C'}
len(py_set)
# Output: 5
So löschen Sie ein Python-Set
Um einen Satz zu löschen, indem Sie alle Elemente entfernen, können Sie die verwenden .clear()
Methode.
Nennen wir die .clear()
Methode auf py_set
.
py_set.clear()
Wenn Sie versuchen, es auszudrucken, erhalten Sie set()
– zeigt an, dass der Satz leer ist. Sie können auch anrufen len()
Funktion, um zu überprüfen, ob die Länge der Menge beträgt zero.
print(py_set)
# set()
print(len(py_set))
# 0
Bisher haben wir gelernt, wie man Basics durchführt GRAUSAM Operationen auf Python-Sets:
- Erstellen: Verwenden
set()
Funktion, Typumwandlung und Initialisierung - Lesen: Zugriff auf Elemente des Sets mit Schleifen und
in
Betreiber für Mitgliedschaftstests - Aktualisierung: Elemente hinzufügen, aus Mengen entfernen und aktualisierenate Sets
- Löschen: Löschen Sie einen Satz, indem Sie alle Elemente daraus entfernen
Gängige Set-Operationen, erklärt mit Python-Code
Mit Python-Sets können wir auch die grundlegenden Set-Operationen ausführen. Wir werden sie in diesem Abschnitt kennenlernen.
# 1. Vereinigung von Mengen
In der Mengenlehre ist die Gewerkschaft von zwei Mengen ist die Menge aller Elemente in mindestens einer der beiden Mengen. Wenn es zwei Mengen gibt, A und B, dann enthält die Vereinigung Elemente, die nur in A, nur in B vorhanden sind, und die Elemente, die sowohl in A als auch in B vorhanden sind.

Um die Vereinigung von Mengen zu finden, können Sie die verwenden |
Betreiber oder die .union()
die Methode mit der Syntax: setA.union(setB)
.
setA = {1,3,5,7,9}
setB = {2,4,6,8,9}
print(setA | setB)
# Output
{1, 2, 3, 4, 5, 6, 7, 8, 9}
setA.union(setB)
# Output
{1, 2, 3, 4, 5, 6, 7, 8, 9}
Die Mengenvereinigung ist eine kommutative Operation; also ist AUB dasselbe wie BU A. Lassen Sie uns dies überprüfen, indem wir die Positionen von vertauschen setA
und setB
der .union()
Methodenaufruf.
setB.union(setA)
# Output
{1, 2, 3, 4, 5, 6, 7, 8, 9}
# 2. Schnittmenge von Mengen
Eine weitere gemeinsame Mengenoperation ist diese Schnittmenge von zwei Mengen, A und B. Die Mengenschnittoperation gibt eine Menge zurück, die alle Elemente enthält, die sowohl in A als auch in B vorhanden sind.
Um den Schnittpunkt zu berechnen, können Sie die verwenden &
Betreiber oder die .intersection()
-Methode, wie im folgenden Code-Snippet erläutert.
print(setA & setB)
# Output
{9}
setA.intersection(setB)
# Output
{9}
In diesem Beispiel ist Element 9 sowohl in setA als auch in setB vorhanden; die Schnittmenge enthält also nur dieses Element.
Wie die Mengenvereinigung ist auch die Mengenschnittmenge eine kommutative Operation.
setB.intersection(setA)
# Output
{9}
# 3. Differenz festlegen
Bei zwei beliebigen Mengen helfen uns Vereinigung und Schnittmenge dabei, die Elemente zu finden, die in beiden bzw. mindestens einer der Mengen vorhanden sind. Auf der anderen Seite, Differenz einstellen hilft uns, die Elemente zu finden, die in einer Menge vorhanden sind, aber nicht in der anderen.

-
setA.difference(setB)
gibt die Menge der Elemente an, die nur in vorhanden sindsetA
und nicht insetB
.-
setB.difference(setA)
gibt die Menge der Elemente an, die nur in vorhanden sindsetB
und nicht insetA
.
print(setA - setB)
print(setB - setA)
# Output
{1, 3, 5, 7}
{8, 2, 4, 6}
Offensichtlich ist A\B nicht dasselbe wie B\A, also ist die Mengendifferenz keine kommutative Operation.
setA.difference(setB)
# {1, 3, 5, 7}
setB.difference(setA)
# {2, 4, 6, 8}
# 4. Symmetrischer Set-Unterschied
Während Kreuzung setzen gibt uns Elemente, die in vorhanden sind beide setzt, die symmetrischer Mengenunterschied gibt die Menge der Elemente zurück, die in vorhanden sind genau eins der Sätze.
Betrachten Sie das folgende Beispiel.
setA = {1,3,5,7,10,12}
setB = {2,4,6,8,10,12}
Um die symmetrische Differenzmenge zu berechnen, können Sie die verwenden ^
Betreiber oder die .symmetric_difference()
Methode.
print(setA ^ setB)
# Output
{1, 2, 3, 4, 5, 6, 7, 8}
Die Elemente 10 und 12 sind in beiden vorhanden setA
und setB
. Sie sind also nicht in der symmetrischen Differenzmenge vorhanden.
setA.symmetric_difference(setB)
# Output
{1, 2, 3, 4, 5, 6, 7, 8}
Da die symmetrische Mengendifferenzoperation alle Elemente sammelt, die in genau einer der beiden Mengen vorkommen, ist die resultierende Menge dieselbe, unabhängig von der Reihenfolge, in der die Elemente gesammelt werden. Daher ist eine symmetrische Satzdifferenz eine kommutative Operation.
setB.symmetric_difference(setA)
# Output
{1, 2, 3, 4, 5, 6, 7, 8}
# 5. Teilmengen und Obermengen
In der Mengenlehre helfen Teilmengen und Obermengen, die Beziehung zwischen zwei Mengen zu verstehen.
Bei zwei Sätzen A und B ist Satz B a Teilmenge von Menge A, wenn alle Elemente in Menge B auch in Menge A vorhanden sind. Und Menge A ist die Obermenge von Satz B.

Betrachten Sie das Beispiel von zwei Sätzen: languages
und languages_extended
.
languages = {'Python', 'JavaScript','C','C++'}
languages_extended = {'Python', 'JavaScript','C','C++','Rust','Go','Scala'}
In Python können Sie die .issubset()
Methode, um zu prüfen, ob eine gegebene Menge eine Teilmenge einer anderen Menge ist.
setA.issubset(setB)
RückgabeTrue
ifsetA
ist eine Teilmenge vonsetB
; andernfalls kehrt es zurückFalse
.
In diesem Beispiel languages
ist eine Teilmenge von languages_extended
.
languages.issubset(languages_extended)
# Output
True
Ähnlich können Sie das verwenden .issuperset()
Methode, um zu prüfen, ob eine gegebene Menge eine Obermenge einer anderen Menge ist.
setA.issuperset(setB)
RückgabeTrue
ifsetA
ist eine Obermenge vonsetB
; andernfalls kehrt es zurückFalse
.
languages_extended.issuperset(languages)
# Output
True
As languages_extended
ist eine Obermenge von Sprachen, languages_extended.issuperset(languages)
Rückgabe True
, wie oben zu sehen.
Schlussfolgerung
Ich hoffe, dieses Tutorial hat Ihnen geholfen, die Funktionsweise von Python-Sets, die Set-Methoden für CRUD-Operationen und allgemeine Set-Operationen zu verstehen. Als nächsten Schritt können Sie versuchen, sie in Ihrem zu verwenden Python-Projekte.
Sie können sich andere eingehende ansehen Python-Anleitungen. Viel Spaß beim Lernen!