Einführung
In diesem Lab sammeln Sie praktische Erfahrungen mit Mengen (Sets) in Python. Mengen sind eine grundlegende Datenstruktur, die zur Speicherung einzigartiger, ungeordneter Elemente verwendet wird. Sie sind äußerst effizient für Aufgaben wie die Überprüfung, ob ein Element in einer Sammlung vorhanden ist, und für die Durchführung mathematischer Mengenoperationen.
Sie lernen, wie man Mengen erstellt, Elemente hinzufügt und entfernt und gängige Operationen wie Vereinigung (Union), Schnittmenge (Intersection) und Differenz (Difference) durchführt. Abschließend sehen Sie eine praktische Anwendung von Mengen, indem Sie diese verwenden, um Duplikate einfach aus einer Liste zu entfernen.
Eine Menge erstellen und Elemente hinzufügen
In diesem ersten Schritt lernen Sie, wie man Mengen erstellt und neue Elemente hinzufügt. Mengen sind Sammlungen einzigartiger Elemente, was bedeutet, dass sie automatisch Duplikate verwerfen.
Ihre Umgebung enthält eine leere Datei namens set_basics.py. Verwenden Sie den Dateiexplorer auf der linken Seite des Editors, um ~/project/set_basics.py zu finden und zu öffnen.
Fügen Sie den folgenden Python-Code in die Datei ein. Dieser Code demonstriert verschiedene Möglichkeiten, eine Menge zu erstellen.
## Method 1: Using curly braces {}
## This creates a set with initial elements.
my_set = {'apple', 'banana', 'cherry'}
print("Set created with braces:", my_set)
print("Type of my_set:", type(my_set))
## Note: Sets automatically remove duplicate elements.
duplicate_set = {'apple', 'banana', 'apple'}
print("Set with duplicates:", duplicate_set)
## Method 2: Using the set() constructor on an iterable (like a string)
## This creates a set from the unique characters in the string.
char_set = set('hello world')
print("Set from a string:", char_set)
## Method 3: Creating an empty set
## You must use set() to create an empty set. {} creates an empty dictionary.
empty_set = set()
print("An empty set:", empty_set)
print("Type of empty_set:", type(empty_set))
Speichern Sie die Datei. Öffnen Sie nun ein Terminal in Ihrem Editor (Sie können das Menü verwenden: Terminal -> New Terminal) und führen Sie Ihr Skript mit dem folgenden Befehl aus.
python ~/project/set_basics.py
Sie sehen eine Ausgabe, die der folgenden ähnelt. Beachten Sie, dass die Reihenfolge der Elemente in einer Menge nicht garantiert ist und Duplikate entfernt werden.
Set created with braces: {'cherry', 'apple', 'banana'}
Type of my_set: <class 'set'>
Set with duplicates: {'banana', 'apple'}
Set from a string: {'d', 'l', 'o', 'r', 'w', ' ', 'h', 'e'}
An empty set: set()
Type of empty_set: <class 'set'>
Als Nächstes fügen wir neue Elemente zu einer bestehenden Menge hinzu. Sie können ein einzelnes Element mit der Methode add() oder mehrere Elemente mit der Methode update() hinzufügen.
Fügen Sie den folgenden Code unten in Ihre Datei set_basics.py ein.
## --- Adding elements ---
fruits = {'apple', 'banana'}
print("\nOriginal fruits set:", fruits)
## Use add() to add a single element
fruits.add('orange')
print("After adding 'orange':", fruits)
## add() has no effect if the element is already present
fruits.add('apple')
print("After adding 'apple' again:", fruits)
## Use update() to add multiple elements from an iterable (like a list)
fruits.update(['mango', 'grape'])
print("After updating with a list:", fruits)
Speichern Sie die Datei erneut und führen Sie das aktualisierte Skript im Terminal aus.
python ~/project/set_basics.py
Die Ausgabe enthält nun die Ergebnisse des Hinzufügens von Elementen.
Set created with braces: {'cherry', 'apple', 'banana'}
Type of my_set: <class 'set'>
Set with duplicates: {'banana', 'apple'}
Set from a string: {'d', 'l', 'o', 'r', 'w', ' ', 'h', 'e'}
An empty set: set()
Type of empty_set: <class 'set'>
Original fruits set: {'banana', 'apple'}
After adding 'orange': {'banana', 'orange', 'apple'}
After adding 'apple' again: {'banana', 'orange', 'apple'}
After updating with a list: {'grape', 'mango', 'banana', 'orange', 'apple'}
Sie haben nun gelernt, wie man Mengen erstellt und sie durch Hinzufügen neuer Elemente modifiziert.
Elemente aus einer Menge entfernen
In diesem Schritt lernen Sie verschiedene Möglichkeiten kennen, Elemente aus einer Menge zu entfernen. Da Mengen ungeordnet sind, können Sie keinen Index verwenden, um Elemente zu entfernen. Stattdessen bietet Python spezifische Methoden für diesen Zweck.
Suchen und öffnen Sie die Datei set_removal.py in Ihrem Verzeichnis ~/project.
Fügen Sie den folgenden Code in die Datei ein. Er demonstriert die Methoden remove(), discard(), pop() und clear().
## --- Removing elements ---
my_set = {'a', 'b', 'c', 'd', 'e'}
print("Original set:", my_set)
## Method 1: remove()
## This removes a specified element. It raises a KeyError if the element is not found.
my_set.remove('b')
print("After removing 'b':", my_set)
## The following line would cause an error: my_set.remove('z')
## Method 2: discard()
## This also removes a specified element, but it does NOT raise an error if the element is not found.
print("\nStarting set for discard:", my_set)
my_set.discard('c')
print("After discarding 'c':", my_set)
my_set.discard('z') ## 'z' is not in the set, but no error occurs.
print("After discarding 'z' (non-existent):", my_set)
## Method 3: pop()
## This removes and returns an arbitrary element from the set.
## Since sets are unordered, you don't know which item will be popped.
print("\nStarting set for pop:", my_set)
popped_item = my_set.pop()
print("Popped item:", popped_item)
print("Set after pop():", my_set)
## Method 4: clear()
## This removes all elements from the set, leaving an empty set.
print("\nStarting set for clear:", my_set)
my_set.clear()
print("Set after clear():", my_set)
Speichern Sie die Datei. Führen Sie nun das Skript in Ihrem Terminal aus.
python ~/project/set_removal.py
Ihre Ausgabe sollte in etwa wie folgt aussehen. Das von pop() entfernte Element kann bei jeder Ausführung des Skripts unterschiedlich sein, da Mengen ungeordnet sind.
Original set: {'d', 'c', 'e', 'a', 'b'}
After removing 'b': {'d', 'c', 'e', 'a'}
Starting set for discard: {'d', 'c', 'e', 'a'}
After discarding 'c': {'d', 'e', 'a'}
After discarding 'z' (non-existent): {'d', 'e', 'a'}
Starting set for pop: {'d', 'e', 'a'}
Popped item: d
Set after pop(): {'e', 'a'}
Starting set for clear: {'e', 'a'}
Set after clear(): set()
Sie kennen nun die wichtigsten Methoden zum Entfernen von Elementen aus einer Menge und verstehen den wichtigen Unterschied zwischen remove() und discard().
Mengenoperationen durchführen
Mengen sind besonders leistungsfähig für die Durchführung mathematischer Operationen wie Vereinigung (Union), Schnittmenge (Intersection) und Differenz (Difference). In diesem Schritt lernen Sie, wie Sie diese Operationen in Python durchführen können.
Suchen und öffnen Sie die Datei set_operations.py in Ihrem Verzeichnis ~/project.
Fügen Sie den folgenden Code in die Datei ein. Dieser Code definiert zwei Mengen und führt dann die drei Hauptmengenoperationen an ihnen durch.
set_a = {'a', 'b', 'c', 'd'}
set_b = {'c', 'd', 'e', 'f'}
print("Set A:", set_a)
print("Set B:", set_b)
## --- Union ---
## Die Vereinigung enthält alle eindeutigen Elemente aus beiden Mengen.
## Sie können den | Operator oder die .union() Methode verwenden.
union_set_op = set_a | set_b
union_set_method = set_a.union(set_b)
print("\nUnion with | operator:", union_set_op)
print("Union with .union() method:", union_set_method)
## --- Intersection ---
## Die Schnittmenge enthält nur die Elemente, die in beiden Mengen gemeinsam sind.
## Sie können den & Operator oder die .intersection() Methode verwenden.
intersection_set_op = set_a & set_b
intersection_set_method = set_a.intersection(set_b)
print("\nIntersection with & operator:", intersection_set_op)
print("Intersection with .intersection() method:", intersection_set_method)
## --- Difference ---
## Die Differenz enthält Elemente, die in der ersten Menge, aber NICHT in der zweiten Menge enthalten sind.
## Sie können den - Operator oder die .difference() Methode verwenden.
difference_set_op = set_a - set_b
difference_set_method = set_a.difference(set_b)
print("\nDifference (A - B) with - operator:", difference_set_op)
print("Difference (A - B) with .difference() method:", difference_set_method)
## Beachten Sie, dass die Reihenfolge für die Differenz wichtig ist
difference_b_a = set_b - set_a
print("Difference (B - A):", difference_b_a)
Speichern Sie die Datei und führen Sie sie im Terminal aus.
python ~/project/set_operations.py
Die Ausgabe zeigt deutlich die Ergebnisse jeder Operation.
Set A: {'d', 'c', 'a', 'b'}
Set B: {'d', 'c', 'f', 'e'}
Union with | operator: {'d', 'c', 'f', 'e', 'a', 'b'}
Union with .union() method: {'d', 'c', 'f', 'e', 'a', 'b'}
Intersection with & operator: {'d', 'c'}
Intersection with .intersection() method: {'d', 'c'}
Difference (A - B) with - operator: {'a', 'b'}
Difference (A - B) with .difference() method: {'a', 'b'}
Difference (B - A): {'f', 'e'}
Sie haben erfolgreich sowohl Operator-Symbole als auch Methoden verwendet, um Vereinigungs-, Schnittmengen- und Differenzoperationen an Mengen durchzuführen.
Eine Menge verwenden, um Duplikate aus einer Liste zu entfernen
Eine der häufigsten und praktischsten Anwendungen für Mengen ist das schnelle Entfernen von doppelten Elementen aus einer Liste. Da Mengen nur eindeutige Elemente enthalten können, ist die Konvertierung einer Liste in eine Menge und zurück in eine Liste ein einfacher und effizienter Weg, dies zu erreichen.
Suchen und öffnen Sie die letzte Datei für dieses Lab, remove_duplicates.py, in Ihrem Verzeichnis ~/project.
Fügen Sie den folgenden Code in die Datei ein.
## A list containing several duplicate numbers
numbers_list = [1, 5, 2, 3, 5, 1, 4, 2, 2, 5]
print("Original list with duplicates:", numbers_list)
## Step 1: Convert the list to a set.
## This automatically removes all duplicate elements.
unique_numbers_set = set(numbers_list)
print("Set created from list (duplicates gone):", unique_numbers_set)
## Step 2: Convert the set back to a list.
## The new list will only contain the unique elements.
unique_numbers_list = list(unique_numbers_set)
print("Final list with duplicates removed:", unique_numbers_list)
## Note: This process does not preserve the original order of the elements
## because sets are an unordered data structure.
Speichern Sie die Datei und führen Sie sie im Terminal aus.
python ~/project/remove_duplicates.py
Die Ausgabe demonstriert den gesamten Prozess und zeigt die ursprüngliche Liste, die zwischenliegende Menge und die endgültige, von Duplikaten bereinigte Liste.
Original list with duplicates: [1, 5, 2, 3, 5, 1, 4, 2, 2, 5]
Set created from list (duplicates gone): {1, 2, 3, 4, 5}
Final list with duplicates removed: [1, 2, 3, 4, 5]
Sie haben Ihr Wissen über Mengen erfolgreich angewendet, um ein häufiges Programmierproblem zu lösen: das Entfernen von Duplikaten aus einer Liste.
Zusammenfassung
In diesem Lab haben Sie die wesentlichen Fähigkeiten für die Arbeit mit Mengen (Sets) in Python erlernt. Sie begannen damit, Mengen mithilfe verschiedener Syntaxen zu erstellen, und lernten, wie diese inhärent die Eindeutigkeit (Uniqueness) erzwingen. Sie übten die Modifikation von Mengen durch das Hinzufügen von Elementen mit add() und update() sowie deren Entfernung mit remove(), discard(), pop() und clear(), wobei Sie die wesentlichen Unterschiede zwischen diesen Methoden beachteten.
Darüber hinaus haben Sie die zentralen mathematischen Mengenoperationen – Vereinigung (Union, |), Schnittmenge (Intersection, &) und Differenz (Difference, -) – erkundet, die grundlegend für Datenanalyse und Algorithmenentwicklung sind. Schließlich haben Sie dieses Wissen praktisch angewendet, indem Sie eine elegante Technik zur Entfernung doppelter Elemente aus einer Liste implementiert haben, eine häufige Aufgabe bei der Datenbereinigung und -vorbereitung. Sie sind nun in der Lage, Mengen effektiv in Ihren Python-Programmen einzusetzen.



