Nutzung 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:
123456789101112131415161718192021import 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)
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'):
1234567891011121314151617181920212223242526import 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)
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.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Großartig!
Completion Rate verbessert auf 7.69
Nutzung 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:
123456789101112131415161718192021import 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)
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'):
1234567891011121314151617181920212223242526import 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)
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.
Danke für Ihr Feedback!