Python - Mengen

Hallo, aufstrebende Python-Programmierer! Heute tauchen wir in die faszinierende Welt der Python-Mengen ein. Als euer freundlicher Nachbar und Informatiklehrer bin ich begeistert, euch auf dieser Reise zu führen. Also, holt euch euer Lieblingsgetränk, macht euch komfortabel und lassen uns gemeinsam die Mengen erkunden!

Python - Sets

Mengen in Python

Stell dir vor, du hast einen Beutel voller bunten Murmeln. Jede Murmel ist einzigartig, und dir ist egal, in welcher Reihenfolge sie sind – du willst nur wissen, welche Farben du hast. Das ist grundsätzlich, was eine Menge in Python ist!

Eine Menge ist eine unsortierte Sammlung einzigartiger Elemente. Es ist wie eine mathematische Menge: Keine Duplikate erlaubt, und die Reihenfolge spielt keine Rolle. Mengen sind unglaublich nützlich, wenn du einzigartige Elemente speichern oder Mengenoperationen wie Vereinigung, Schnitt und Differenz durchführen musst.

Erstellen einer Menge in Python

Lassen uns damit beginnen, unsere erste Menge zu erstellen. Es gibt zwei Hauptmethoden, um eine Menge in Python zu erstellen:

  1. Mit geschweiften Klammern {}
  2. Mit dem set()-Konstruktor

Hier ist ein Beispiel für beide Methoden:

# Methode 1: Verwenden von geschweiften Klammern
fruits = {'Apfel', 'Banane', 'Kirsche'}

# Methode 2: Verwenden des set() Konstruktors
colors = set(['rot', 'grün', 'blau'])

print(fruits)
print(colors)

Ausgabe:

{'Kirsche', 'Apfel', 'Banane'}
{'blau', 'rot', 'grün'}

Beachte, wie sich die Reihenfolge der Elemente in der Ausgabe von der Definition unterscheiden kann. Das liegt daran, dass Mengen unsortiert sind!

Duplikatelemente in einer Menge

Erinnere dich, als ich sagte, dass Mengen nur einzigartige Elemente enthalten? Lass uns sehen, was passiert, wenn wir versuchen, Duplikate hinzuzufügen:

numbers = {1, 2, 3, 2, 4, 3, 5}
print(numbers)

Ausgabe:

{1, 2, 3, 4, 5}

Wie du siehst, entfernt Python die Duplikate automatisch für uns. Ist das nicht praktisch?

Hinzufügen von Elementen zu einer Menge

Um ein einzelnes Element zu einer Menge hinzuzufügen, verwenden wir die add()-Methode. Wenn wir mehrere Elemente auf einmal hinzufügen möchten, verwenden wir die update()-Methode.

# Hinzufügen eines einzelnen Elements
fruits.add('Orange')
print(fruits)

# Hinzufügen mehrerer Elemente
fruits.update(['Traube', 'Mango'])
print(fruits)

Ausgabe:

{'Kirsche', 'Apfel', 'Banane', 'Orange'}
{'Kirsche', 'Mango', 'Apfel', 'Banane', 'Orange', 'Traube'}

Entfernen von Elementen aus einer Menge

Es gibt mehrere Möglichkeiten, Elemente aus einer Menge zu entfernen. Lass uns diese erkunden:

# Verwenden von remove() - löst einen Fehler aus, wenn das Element nicht existiert
fruits.remove('Banane')

# Verwenden von discard() - löst keinen Fehler aus, wenn das Element nicht existiert
fruits.discard('Kiwi')

# Verwenden von pop() - entfernt und gibt ein beliebiges Element zurück
popped = fruits.pop()
print(f"Entferntes Element: {popped}")

# Verwenden von clear() - entfernt alle Elemente
fruits.clear()

print(fruits)

Ausgabe:

Entferntes Element: Kirsche
set()

Mitgliedschaftstest in einer Menge

Eine der großen Vorteile von Mengen ist, dass sie einen sehr schnellen Mitgliedschaftstest ermöglichen. Wir können das in-Schlüsselwort verwenden, um zu überprüfen, ob ein Element in einer Menge existiert:

numbers = {1, 2, 3, 4, 5}
print(3 in numbers)  # True
print(6 in numbers)  # False

Diese Operation ist mit Mengen viel schneller als mit Listen, besonders für große Sammlungen!

Mengenoperationen

Mengen in Python unterstützen verschiedene mathematische Mengenoperationen. Lass uns einige davon ansehen:

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}

# Vereinigung
print(set1 | set2)  # oder set1.union(set2)

# Schnitt
print(set1 & set2)  # oder set1.intersection(set2)

# Differenz
print(set1 - set2)  # oder set1.difference(set2)

# Symmetrische Differenz
print(set1 ^ set2)  # oder set1.symmetric_difference(set2)

Ausgabe:

{1, 2, 3, 4, 5, 6, 7, 8}
{4, 5}
{1, 2, 3}
{1, 2, 3, 6, 7, 8}

Python Set-Comprehensions

Genau wie Listen-Comprehensions unterstützt Python auch Set-Comprehensions. Sie bieten eine prägnante Möglichkeit, Mengen basierend auf existierenden iterierbaren Objekten zu erstellen.

# Erstellen einer Menge der Quadrate von Zahlen von 0 bis 9
squares = {x**2 for x in range(10)}
print(squares)

Ausgabe:

{0, 1, 4, 9, 16, 25, 36, 49, 64, 81}

Filtern von Elementen mit Set-Comprehensions

Wir können auch Set-Comprehensions verwenden, um Elemente zu filtern:

# Erstellen einer Menge von geraden Quadraten von 0 bis 9
even_squares = {x**2 for x in range(10) if x % 2 == 0}
print(even_squares)

Ausgabe:

{0, 4, 16, 36, 64}

Geschachtelte Set-Comprehensions

Während weniger häufig, sind auch geschachtelte Set-Comprehensions möglich:

# Erstellen einer Menge von Tupeln (x, y), wobei x und y Zahlen sind
digit_pairs = {(x, y) for x in range(3) for y in range(3)}
print(digit_pairs)

Ausgabe:

{(0, 1), (1, 2), (0, 0), (2, 0), (1, 1), (2, 2), (0, 2), (2, 1), (1, 0)}

Gefrierte Mengen

Abschließend, aber nicht zuletzt, lass uns über gefrierte Mengen sprechen. Eine gefrierte Menge ist eine unveränderliche Version eines Python-Menge-Objekts. Während die Elemente einer Menge jederzeit geändert werden können, bleiben die Elemente einer gefrierten Menge nach der Erstellung gleich.

normal_set = {1, 2, 3}
frozen_set = frozenset([1, 2, 3])

normal_set.add(4)  # Dies funktioniert
# frozen_set.add(4)  # Dies würde einen AttributeError auslösen

Gefrierte Mengen sind besonders nützlich, wenn du eine unveränderliche Menge benötigst, wie z.B. als Schlüssel für ein Wörterbuch.

Und so ist es, Leute! Wir haben die Einmaleins der Python-Mengen abgedeckt. Denke daran, dass Übung macht den Meister, also zögere nicht, mit diesen Konzepten zu experimentieren. Happy coding!

Hier ist eine Tabelle, die die wichtigsten Mengenmethoden zusammenfasst, die wir besprochen haben:

Methode Beschreibung
add() Fügt ein Element zur Menge hinzu
update() Fügt mehrere Elemente zur Menge hinzu
remove() Entfernt ein spezifisches Element aus der Menge (löst einen Fehler aus, wenn nicht gefunden)
discard() Entfernt ein spezifisches Element aus der Menge (löst keinen Fehler aus, wenn nicht gefunden)
pop() Entfernt und gibt ein zufälliges Element aus der Menge zurück
clear() Entfernt alle Elemente aus der Menge
union() Gibt eine Menge zurück, die die Vereinigung von Mengen enthält
intersection() Gibt eine Menge zurück, die den Schnitt von Mengen enthält
difference() Gibt eine Menge zurück, die die Differenz von Mengen enthält
symmetric_difference() Gibt eine Menge zurück, die Elemente enthält, die in entweder Menge, aber nicht in beiden sind

Credits: Image by storyset