Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Nutzung von map() und Listen-Komprehensionen | Enhancing Performance With Built-in Tools
Optimierungstechniken in Python

bookNutzung von map() und Listen-Komprehensionen

Wann immer möglich, ist es besser, sich auf eingebaute Funktionen, Methoden oder Bibliotheksfunktionen zu verlassen, anstatt Algorithmen von Grund auf neu zu erstellen. Eingebaute und Bibliotheksfunktionen sind in der Regel für Leistung optimiert, laufen effizienter und sind darauf ausgelegt, eine Vielzahl von Randfällen effektiv zu behandeln.

Beginnen wir mit leistungsstarken Werkzeugen wie der map()-Funktion und List Comprehensions, die Ihren Code erheblich beschleunigen können. Da List Comprehensions stärker auf Leistung optimiert sind und map() in C implementiert ist, werden sie im Allgemeinen schneller ausgeführt als manuell geschriebene Schleifen.

List Comprehensions

List Comprehensions bieten eine kürzere und oft schnellere Möglichkeit, Listen zu erstellen, verglichen mit traditionellen for-Schleifen. Außerdem kann Ihr Code dadurch leichter lesbar und verständlicher werden.

Vergleichen wir die Leistung einer for-Schleife und einer List Comprehension, indem wir eine Liste erzeugen, in der jede Zahl von 1 bis 10000000 mit 2 multipliziert wird:

123456789101112131415161718192021
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 numbers = list(range(1, 10000001)) @timeit_decorator(number=3) def list_comprehension(): return [x * 2 for x in numbers] @timeit_decorator(number=3) def for_loop(): result = [] for x in numbers: result.append(x * 2) return result list_1 = list_comprehension() list_2 = for_loop() print(list_1 == list_2)
copy

Verwendung von map()

Die Funktion map wendet eine angegebene Funktion auf jedes Element eines Iterables (z. B. einer Liste) an.

Neben der kompakteren Schreibweise im Vergleich zu Schleifen läuft sie oft schneller, da durch C-Level-Optimierungen in der Implementierung der Overhead wiederholter Funktionsaufrufe reduziert wird.

Obwohl map einige Leistungsverbesserungen bieten kann, insbesondere bei der Verwendung von eingebauten Funktionen, ist der Geschwindigkeitsunterschied im Vergleich zu List Comprehensions meist vernachlässigbar. Beide sind hoch optimiert, und bei einfachen Operationen ist der Leistungsvorteil von map kaum spürbar. In der Praxis sollte die Wahl zwischen beiden eher auf Lesbarkeit und spezifischen Anwendungsfällen wie Speichereffizienz mit map basieren.

Vergleich der Performance von map, for-Schleifen und List Comprehensions beim Formatieren von 1000000 Kundennamen in die Titel-Schreibweise (z. B. 'john doe' -> 'John Doe'):

1234567891011121314151617181920212223242526
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 customer_names = ['john doe', 'jane smith', 'alex johnson', 'ivan smith'] * 250000 @timeit_decorator(number=10) def map_function(): return list(map(str.title, customer_names)) @timeit_decorator(number=10) def list_comprehension(): return [name.title() for name in customer_names] @timeit_decorator(number=10) def for_loop(): result = [] for name in customer_names: result.append(name.title()) return result formatted_with_map = map_function() formatted_with_comprehension = list_comprehension() formatted_with_for_loop = for_loop() print(formatted_with_map == formatted_with_comprehension == formatted_with_for_loop)
copy

Wie erwartet ist die for-Schleife der langsamste Ansatz der drei. In diesem Beispiel erwies sich map als schneller als die Listenkomprehension, wobei die Leistung in der Praxis je nach Anwendungsfall variieren kann. Manchmal können Listenkomprehensionen sogar map übertreffen, insbesondere bei einfacheren Ausdrücken.

question mark

Welche der folgenden Aussagen über Listenkomprehensionen und map() ist korrekt?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 1

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

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

bookNutzung von map() und Listen-Komprehensionen

Swipe um das Menü anzuzeigen

Wann immer möglich, ist es besser, sich auf eingebaute Funktionen, Methoden oder Bibliotheksfunktionen zu verlassen, anstatt Algorithmen von Grund auf neu zu erstellen. Eingebaute und Bibliotheksfunktionen sind in der Regel für Leistung optimiert, laufen effizienter und sind darauf ausgelegt, eine Vielzahl von Randfällen effektiv zu behandeln.

Beginnen wir mit leistungsstarken Werkzeugen wie der map()-Funktion und List Comprehensions, die Ihren Code erheblich beschleunigen können. Da List Comprehensions stärker auf Leistung optimiert sind und map() in C implementiert ist, werden sie im Allgemeinen schneller ausgeführt als manuell geschriebene Schleifen.

List Comprehensions

List Comprehensions bieten eine kürzere und oft schnellere Möglichkeit, Listen zu erstellen, verglichen mit traditionellen for-Schleifen. Außerdem kann Ihr Code dadurch leichter lesbar und verständlicher werden.

Vergleichen wir die Leistung einer for-Schleife und einer List Comprehension, indem wir eine Liste erzeugen, in der jede Zahl von 1 bis 10000000 mit 2 multipliziert wird:

123456789101112131415161718192021
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 numbers = list(range(1, 10000001)) @timeit_decorator(number=3) def list_comprehension(): return [x * 2 for x in numbers] @timeit_decorator(number=3) def for_loop(): result = [] for x in numbers: result.append(x * 2) return result list_1 = list_comprehension() list_2 = for_loop() print(list_1 == list_2)
copy

Verwendung von map()

Die Funktion map wendet eine angegebene Funktion auf jedes Element eines Iterables (z. B. einer Liste) an.

Neben der kompakteren Schreibweise im Vergleich zu Schleifen läuft sie oft schneller, da durch C-Level-Optimierungen in der Implementierung der Overhead wiederholter Funktionsaufrufe reduziert wird.

Obwohl map einige Leistungsverbesserungen bieten kann, insbesondere bei der Verwendung von eingebauten Funktionen, ist der Geschwindigkeitsunterschied im Vergleich zu List Comprehensions meist vernachlässigbar. Beide sind hoch optimiert, und bei einfachen Operationen ist der Leistungsvorteil von map kaum spürbar. In der Praxis sollte die Wahl zwischen beiden eher auf Lesbarkeit und spezifischen Anwendungsfällen wie Speichereffizienz mit map basieren.

Vergleich der Performance von map, for-Schleifen und List Comprehensions beim Formatieren von 1000000 Kundennamen in die Titel-Schreibweise (z. B. 'john doe' -> 'John Doe'):

1234567891011121314151617181920212223242526
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 customer_names = ['john doe', 'jane smith', 'alex johnson', 'ivan smith'] * 250000 @timeit_decorator(number=10) def map_function(): return list(map(str.title, customer_names)) @timeit_decorator(number=10) def list_comprehension(): return [name.title() for name in customer_names] @timeit_decorator(number=10) def for_loop(): result = [] for name in customer_names: result.append(name.title()) return result formatted_with_map = map_function() formatted_with_comprehension = list_comprehension() formatted_with_for_loop = for_loop() print(formatted_with_map == formatted_with_comprehension == formatted_with_for_loop)
copy

Wie erwartet ist die for-Schleife der langsamste Ansatz der drei. In diesem Beispiel erwies sich map als schneller als die Listenkomprehension, wobei die Leistung in der Praxis je nach Anwendungsfall variieren kann. Manchmal können Listenkomprehensionen sogar map übertreffen, insbesondere bei einfacheren Ausdrücken.

question mark

Welche der folgenden Aussagen über Listenkomprehensionen und map() ist korrekt?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 1
some-alt