Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Mengen und Tupel | Effiziente Nutzung von Datenstrukturen
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Optimierungstechniken in Python

bookMengen und Tupel

Bevor wir uns mit Sets und Tupeln beschäftigen, ist es wichtig zu erwähnen, dass Dictionaries hier nicht behandelt werden.

Set

Ein Set bietet eine durchschnittliche O(1)-Zeitkomplexität für Einfügungen, Löschungen und Suchvorgänge. Das bedeutet, dass diese Operationen in konstanter Zeit ausgeführt werden, unabhängig von der Größe des Sets. Dadurch sind Sets wesentlich schneller als Listen beim Überprüfen der Mitgliedschaft sowie beim Hinzufügen oder Entfernen von Elementen, wo Listen im schlechtesten Fall eine O(n)-Zeitkomplexität aufweisen (die Zeit wächst linear mit der Größe der Liste).

Wann verwenden:

  • Es werden eindeutige Elemente benötigt, um Duplikate in der Sammlung zu vermeiden;
  • Schnelle Mitgliedschaftsüberprüfung ist erforderlich, wodurch Sets ideal für Aufgaben wie das Überprüfen der Existenz eines Elements sind;
  • Es werden Operationen wie Vereinigungen, Schnittmengen oder Differenzen durchgeführt, die von Sets mit optimierten Methoden unterstützt werden;
  • Reihenfolge ist unerheblich, da Sets von Natur aus ungeordnet sind und keine Einfügereihenfolge beibehalten wird.
1234567891011121314151617181920
# Removing duplicates from a list using a set numbers = [1, 3, 2, 3, 5, 4, 5] unique_numbers = set(numbers) print(f'Unique Numbers: {unique_numbers}') # Fast membership testing names = {'Alice', 'Bob', 'Charlie'} print(f'Is Alice in the set? {"Alice" in names}') print(f'Is Eve in the set? {"Eve" in names}') # Set operations: union, intersection, and difference set_a = {1, 4, 3, 2} set_b = {3, 5, 4, 6} print(f'Union: {set_a.union(set_b)}') print(f'Intersection: {set_a.intersection(set_b)}') print(f'Difference: {set_a.difference(set_b)}') # Removing elements from a set safely with discard names.discard('Alice') # Safe removal, no error if the element doesn't exist print(f'Names after removal: {names}')
copy

Vergleich der Performance von Set und Liste beim Überprüfen der Mitgliedschaft:

12345678910111213141516171819
import os os.system('wget https://staging-content-media-cdn.codefinity.com/courses/8d21890f-d960-4129-bc88-096e24211d53/section_1/chapter_3/decorators.py 2>/dev/null') from decorators import timeit_decorator # Create a large list and set with the same elements large_list = list(range(10000000)) large_set = set(large_list) # Test membership for an element at the end element_to_find = 9999999 @timeit_decorator(number=50) def test_membership(element, collection): return element in collection print('List:') print(test_membership(element_to_find, large_list)) print('Set:') print(test_membership(element_to_find, large_set))
copy

Tupel

Tupel werden typischerweise verwendet, wenn sichergestellt werden muss, dass die Daten nicht verändert werden können, oder als Schlüssel in einem dict oder als Element in einem set (da Tupel hashbar sind).

  • Besser als Listen: wenn unveränderliche Daten benötigt werden, die Sammlung als Dictionary-Schlüssel oder Set-Element verwendet werden soll oder wenn eine speichereffiziente Speicherung für eine Sammlung fester Größe erforderlich ist;

  • Besser als NumPy-Arrays: wenn die Daten nicht numerisch sind oder wenn Unveränderlichkeit entscheidend ist. Während NumPy-Arrays für numerische Berechnungen konzipiert und standardmäßig veränderbar sind, bieten Tupel Sicherheit für nicht-numerische Daten oder kleine, strukturierte Sammlungen, die konstant bleiben müssen.

12345678
# Each tuple in the list represents an immutable student record students = [ (1834, 'James', 'Johnson'), (2749, 'Alice', 'Smith'), (4923, 'Bob', 'Brown') ] # Attempting to modify a tuple will raise a TypeError students[0][1] = 'Fred'
copy

Da die students-Liste Studierendendatensätze (ID, Vorname, Nachname) enthält, die schreibgeschützt sein sollen, ist es besser, für jeden Datensatz Tupel anstelle von Listen zu verwenden. Zusätzlich sind Tupel, wie oben erwähnt, etwas speichereffizienter als Listen.

1. Welches der folgenden Szenarien eignet sich am besten für die Verwendung einer Menge anstelle einer Liste?

2. Sie haben einen Datensatz mit Millionen von Einträgen und müssen häufig überprüfen, ob bestimmte Werte darin enthalten sind. Welche Datenstruktur ist für diesen Zweck am effizientesten?

3. Sie erstellen einen Datensatz für jeden Studenten, der eine eindeutige ID, einen Vornamen und einen Nachnamen enthält. Die Daten sollen nach der Erstellung nicht mehr verändert werden. Welche Datenstruktur ist am besten geeignet?

question mark

Welches der folgenden Szenarien eignet sich am besten für die Verwendung einer Menge anstelle einer Liste?

Select the correct answer

question mark

Sie haben einen Datensatz mit Millionen von Einträgen und müssen häufig überprüfen, ob bestimmte Werte darin enthalten sind. Welche Datenstruktur ist für diesen Zweck am effizientesten?

Select the correct answer

question mark

Sie erstellen einen Datensatz für jeden Studenten, der eine eindeutige ID, einen Vornamen und einen Nachnamen enthält. Die Daten sollen nach der Erstellung nicht mehr verändert werden. Welche Datenstruktur ist am besten geeignet?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 2

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

bookMengen und Tupel

Swipe um das Menü anzuzeigen

Bevor wir uns mit Sets und Tupeln beschäftigen, ist es wichtig zu erwähnen, dass Dictionaries hier nicht behandelt werden.

Set

Ein Set bietet eine durchschnittliche O(1)-Zeitkomplexität für Einfügungen, Löschungen und Suchvorgänge. Das bedeutet, dass diese Operationen in konstanter Zeit ausgeführt werden, unabhängig von der Größe des Sets. Dadurch sind Sets wesentlich schneller als Listen beim Überprüfen der Mitgliedschaft sowie beim Hinzufügen oder Entfernen von Elementen, wo Listen im schlechtesten Fall eine O(n)-Zeitkomplexität aufweisen (die Zeit wächst linear mit der Größe der Liste).

Wann verwenden:

  • Es werden eindeutige Elemente benötigt, um Duplikate in der Sammlung zu vermeiden;
  • Schnelle Mitgliedschaftsüberprüfung ist erforderlich, wodurch Sets ideal für Aufgaben wie das Überprüfen der Existenz eines Elements sind;
  • Es werden Operationen wie Vereinigungen, Schnittmengen oder Differenzen durchgeführt, die von Sets mit optimierten Methoden unterstützt werden;
  • Reihenfolge ist unerheblich, da Sets von Natur aus ungeordnet sind und keine Einfügereihenfolge beibehalten wird.
1234567891011121314151617181920
# Removing duplicates from a list using a set numbers = [1, 3, 2, 3, 5, 4, 5] unique_numbers = set(numbers) print(f'Unique Numbers: {unique_numbers}') # Fast membership testing names = {'Alice', 'Bob', 'Charlie'} print(f'Is Alice in the set? {"Alice" in names}') print(f'Is Eve in the set? {"Eve" in names}') # Set operations: union, intersection, and difference set_a = {1, 4, 3, 2} set_b = {3, 5, 4, 6} print(f'Union: {set_a.union(set_b)}') print(f'Intersection: {set_a.intersection(set_b)}') print(f'Difference: {set_a.difference(set_b)}') # Removing elements from a set safely with discard names.discard('Alice') # Safe removal, no error if the element doesn't exist print(f'Names after removal: {names}')
copy

Vergleich der Performance von Set und Liste beim Überprüfen der Mitgliedschaft:

12345678910111213141516171819
import os os.system('wget https://staging-content-media-cdn.codefinity.com/courses/8d21890f-d960-4129-bc88-096e24211d53/section_1/chapter_3/decorators.py 2>/dev/null') from decorators import timeit_decorator # Create a large list and set with the same elements large_list = list(range(10000000)) large_set = set(large_list) # Test membership for an element at the end element_to_find = 9999999 @timeit_decorator(number=50) def test_membership(element, collection): return element in collection print('List:') print(test_membership(element_to_find, large_list)) print('Set:') print(test_membership(element_to_find, large_set))
copy

Tupel

Tupel werden typischerweise verwendet, wenn sichergestellt werden muss, dass die Daten nicht verändert werden können, oder als Schlüssel in einem dict oder als Element in einem set (da Tupel hashbar sind).

  • Besser als Listen: wenn unveränderliche Daten benötigt werden, die Sammlung als Dictionary-Schlüssel oder Set-Element verwendet werden soll oder wenn eine speichereffiziente Speicherung für eine Sammlung fester Größe erforderlich ist;

  • Besser als NumPy-Arrays: wenn die Daten nicht numerisch sind oder wenn Unveränderlichkeit entscheidend ist. Während NumPy-Arrays für numerische Berechnungen konzipiert und standardmäßig veränderbar sind, bieten Tupel Sicherheit für nicht-numerische Daten oder kleine, strukturierte Sammlungen, die konstant bleiben müssen.

12345678
# Each tuple in the list represents an immutable student record students = [ (1834, 'James', 'Johnson'), (2749, 'Alice', 'Smith'), (4923, 'Bob', 'Brown') ] # Attempting to modify a tuple will raise a TypeError students[0][1] = 'Fred'
copy

Da die students-Liste Studierendendatensätze (ID, Vorname, Nachname) enthält, die schreibgeschützt sein sollen, ist es besser, für jeden Datensatz Tupel anstelle von Listen zu verwenden. Zusätzlich sind Tupel, wie oben erwähnt, etwas speichereffizienter als Listen.

1. Welches der folgenden Szenarien eignet sich am besten für die Verwendung einer Menge anstelle einer Liste?

2. Sie haben einen Datensatz mit Millionen von Einträgen und müssen häufig überprüfen, ob bestimmte Werte darin enthalten sind. Welche Datenstruktur ist für diesen Zweck am effizientesten?

3. Sie erstellen einen Datensatz für jeden Studenten, der eine eindeutige ID, einen Vornamen und einen Nachnamen enthält. Die Daten sollen nach der Erstellung nicht mehr verändert werden. Welche Datenstruktur ist am besten geeignet?

question mark

Welches der folgenden Szenarien eignet sich am besten für die Verwendung einer Menge anstelle einer Liste?

Select the correct answer

question mark

Sie haben einen Datensatz mit Millionen von Einträgen und müssen häufig überprüfen, ob bestimmte Werte darin enthalten sind. Welche Datenstruktur ist für diesen Zweck am effizientesten?

Select the correct answer

question mark

Sie erstellen einen Datensatz für jeden Studenten, der eine eindeutige ID, einen Vornamen und einen Nachnamen enthält. Die Daten sollen nach der Erstellung nicht mehr verändert werden. Welche Datenstruktur ist am besten geeignet?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 2
some-alt