Objektsammlungen in Sets

https://oer-informatik.de/python_set

https://bildung.social/@oerinformatik

tl/dr; (ca. 10 min Lesezeit): Mit Sets bietet Python einen Objektsammlungstyp, der dafür sorgt, dass jedes Element einzigartig ist. Die verfügbaren Methoden der set-Klasse werden in diesem Artikel an Beispielen vorgestellt. (Zuletzt geändert am 13.11.2024)

Grundlagen

Sets sind ungeordnete Sammlungen einzigartiger (unikaler) Elemente, d.h. jedes Objekt kann genau einmal vorkommen.

Sets sind dynamische, veränderbare (mutable) Objektsammlungen ohne garantierte Ordnung innerhalb der Elemente. Sie enthalten keine Duplikate (Dopplungen). Sie werden initialisiert und instanziiert, in dem die einzelnen Komma-getrennten Elemente in geschweiften Klammern eingefasst werden:

Unterschied zu Listen

Der Unterschied zu einer list wird in folgendem Beispiel deutlich:

Zunächst erstellen wir eine list mit allen Spielkarten, die ein Spieler bei MauMau auf der Hand hat:

Sicherheitshalber prüfen wir nochmal, ob es sich wirklich um eine list handelt. Durch die eckigen Klammern bei der Instanziierung wurde dies festgelegt:

Wir wandeln diese list in ein set um über die Python-Funktion set() und prüfen, ob der Datentyp stimmt:

Es handelt sich um ein Set. Sets dürfen keine Duplikate enthalten - in der list waren jedoch einige Spielkarten doppelt. Wir überprüfen das: Enthält das set noch Dopplungen?

Offensichtlich wurden die Duplikate entfernt.

Mengenlehre mit Sets…

Mithilfe von Sets lassen sich Mengenoperationen vornehmen. Wir wollen das an Hand eines Pizzabeispiels aufzeigen. Herta und Manfred haben sich Pizzabelage ausgesucht und in Sets gespeichert:

Welche Zutaten mögen Manfred und Herta? Die Schnittmenge beider Sets definiert, welche Elemente in beiden Sets vorkommen.

Schnittmenge aus den Vorlieben von Herta und Manfred
Schnittmenge aus den Vorlieben von Herta und Manfred

Mit der Set-Methode intersection() kann ein Set mit allen Elementen ausgegeben werden, die in beiden Sets vorkommt:

Was mag Manfred, was Herta nicht mag? Die Methode difference() löscht aus der Ergebnismenge alle Elemente, die auch im übergebenen Set vorkommen:

Was mag Herta, was Manfred nicht mag? Natürlich geht das auch andersherum:

Welche Elemente sind insgesamt vorhanden (also in mindestens einer der beiden Sets)? Hierüber gibt die Vereinigungsmenge Auskunft (Methode: union()). Was muss also eingekauft werden, wenn Manfred und Herta zusammen kochen wollen?

Bleibt die Frage, welche Elemente nur in einer der beiden Sets vorkommen (also etwa union() minus intersection()). Hier hilft uns symmetric_difference():

Übersicht zu den Methoden eines Set

Die wesentlichen Methoden, die die Python-Klasse set anbietet, ist in nachfolgendem UML-Klassendiagramm dargestellt:

UML-Klassendiagramm für Sets
UML-Klassendiagramm für Sets

Weitere Literatur zu Sets


Hinweis zur Nachnutzung als Open Educational Resource (OER)

Dieser Artikel und seine Texte, Bilder, Grafiken, Code und sonstiger Inhalt sind - sofern nicht anders angegeben - lizenziert unter CC BY 4.0. Nennung gemäß TULLU-Regel bitte wie folgt: Objektsammlungen in Sets” von oer-informatik.de (H. Stein), Lizenz: CC BY 4.0. Der Artikel wurde unter https://oer-informatik.de/python_set veröffentlicht, die Quelltexte sind in weiterverarbeitbarer Form verfügbar im Repository unter https://gitlab.com/oer-informatik/python-basics/erste-schritte-mit-python. Stand: 13.11.2024.

[Kommentare zum Artikel lesen, schreiben] / [Artikel teilen] / [gitlab-Issue zum Artikel schreiben]

Kommentare gerne per Mastodon, Verbesserungsvorschläge per gitlab issue (siehe oben). Beitrag teilen: