Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

Sets in Python: Ein vollständiger Leitfaden mit Codebeispielen

Python-Sets
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

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!

Basics of 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'

Der erste Satz enthält drei Zahlen, ein Tupel und einen String. Die Set-Initialisierung läuft ohne Fehler. Während der zweite Satz eine Liste anstelle eines Tupels enthält. Eine Liste ist eine veränderliche Sammlung, sie kann nicht gehasht werden, und die Initialisierung wirft a TypeError.

📑 Alles zusammengenommen können wir ein Python-Set als definieren veränderlich Sammlung von deutlich und hashbar Elemente.

How to Create a Python Set

Wir beginnen damit, zu lernen, wie man ein Set in Python erstellt. 

# 1. Explizite Initialisierung verwenden

Sie können eine Menge in Python erstellen, indem Sie die Elemente der Menge durch Kommas getrennt angeben (,) 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, Mengen zu erstellen, besteht darin, andere Iterables, wie z. B. Listen und Tupel, mithilfe von in Mengen 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 Entfernen Sie Duplikate aus Python-Listen.

How to Add Elements to a Python Set

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ügen collection zu einem Satz. Das collection 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.

Remove Elements from a Python Set

Betrachten wir die folgende Menge (py_set vor dem Update-Vorgang).

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'}

Access Elements of a Python Set

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ückgabe True wenn Element im Satz vorhanden ist; sonst kehrt es zurück False.

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

Find the Length of a Python Set

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

How to Clear a 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 des Satzes Null ist.

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
  • Lese: Zugriff auf Elemente des Sets mit Schleifen und in Betreiber für Mitgliedschaftstests
  • Aktualisieren: Hinzufügen, Entfernen von Elementen aus Sätzen und Aktualisieren von Sätzen
  • Löschen: Löschen Sie einen Satz, indem Sie alle Elemente daraus entfernen

Common Set Operations, Explained with 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 einstellen

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.

python-set-Unterschied

- setA.difference(setB) gibt die Menge der Elemente an, die nur in vorhanden sind setA und nicht in setB.

- setB.difference(setA) gibt die Menge der Elemente an, die nur in vorhanden sind setB und nicht in setA.

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ückgabe True if setA ist eine Teilmenge von setB; andernfalls kehrt es zurück False.

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ückgabe True if setA ist eine Obermenge von setB; andernfalls kehrt es zurück False.

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.

Fazit

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!

Danke an unsere Sponsoren
Weitere großartige Lektüre zum Thema Entwicklung
Treiben Sie Ihr Geschäft an
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder