Python - unbekannte Funktionen: map

  Ralf Hersel   Lesezeit: 3 Minuten

Eine Funktion auf eine Liste anwenden.

python - unbekannte funktionen: map

Aufgrund des positiven Feedbacks zu meinem ersten Lückenfüller-Artikel zu unbekannten Python-Funktionen schiebe ich gleich noch einen hinterher. Dieses Mal geht es um die eingebaute Funktion map, die eine gewisse Ähnlichkeit zu zip aufweist. Die Funktion loopt/schleift/iteriert über ein iterierbares Objekt ohne, dass dafür eine for-Schleife nötig ist. Übersetzt man das englische Wort 'to map', kann man es als 'abbilden' beschreiben. Eine Funktion wird auf eine Datenmenge 'abgebildet'. Man könnte map auch als 'wende an auf' betiteln.

Die Zutaten für map, sind eine Funktion und ein iterierbares Objekt, wie etwa eine Liste. Hier ist ein einfaches Beispiel:

Obstsorten = ['Banane', 'Apfel', 'Orange', 'Pflaume']

Nun definieren wir eine Funktion, die auf diese (oder eine andere Liste) abgebildet (angewendet) werden soll. Wie wäre es mit der Länge der Strings (Texte) in der Liste?

def meine_funktion(ein_element_der_liste):
    return len(ein_element_der_liste)

Die Funktion empfängt ein Element aus einer iterierbaren Menge, z. B. einer Obstliste. Bevor ich die map-Funktion verwende, zeige ich zuerst den klassischen Weg mittels einer for-Schleife:

for Obst in Obstsorten:
    Laenge = meine_funktion(Obst)
    print(Laenge)

Und hier das Ganze im Terminal:

>>> Obstsorten = ['Banane', 'Apfel', 'Orange', 'Pflaume']
>>> def meine_funktion(ein_element_der_liste):
...     return len(ein_element_der_liste)
... 
>>> for Obst in Obstsorten:
...     Laenge = meine_funktion(Obst)
...     print(Laenge)
... 
6
5
6
7

Jetzt kommt das Gleiche mit der map-Funktion:

>>> laengen = map(meine_funktion, Obstsorten)
>>> list(laengen)
[6, 5, 6, 7]

Wie ihr seht, empfängt map zwei Parameter, nämlich die Funktion und das iterierbare Objekt (Liste der Obstsorten). Zurückgeliefert wird ein weiteres iterierbares Objekt (laengen), welches die Resultate der Funktionsaufrufe für jedes Element enthält.

Was ist der Vorteil der map-Funktion, gegenüber einer normalen for-Schleife? Wenn man in der for-Schleife keine weiteren Hexereien betreibt, sondern nur das Ergebnis der Funktionsaufrufe als iterierbares Objekt (laengen) erhalten möchte, ist map viel eleganter und kürzer als eine for-Schleife. Ausserdem ist die Verarbeitungsgeschwindigkeit von map viel schneller und der Speicherverbrauch viel niedriger als bei for-Schleifen. Man ist nicht auf selbstdefinierte Funktionen angewiesen, sondern kann auch jede eingebaute Funktion verwenden. Angenommen ihr möchtet eine Liste von String-Zahlen in Integer-Zahlen umwandeln, dann geht das so:

>>> text_zahlen = ['1', '2', '3']
>>> int_zahlen = map(int, text_zahlen)
>>> list(int_zahlen)
[1, 2, 3]

Eleganter wird es heute nicht mehr.

Tags

Python, Map, Funktion, Abbilden, Funktionen

Es wurden noch keine Kommentare verfasst, sei der erste!