map für Funktionen mit mehreren Argumenten

Code-Stücke können hier veröffentlicht werden.
Antworten
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Bisher hatte ich map immer nur so angwendet: map(function, iterable). Bis ich jetzt herausgefunden habe, daß es auch anders geht. Wobei ich sagen muß, die Doku beschreibt das zwar alles. Aber so richtig klar war mir das nicht gleich. Hier mein Beispiel:

Code: Alles auswählen

print map(max,[1,2,4],[6,1,1])
Der Code ersetzt quasi folgende LC:

Code: Alles auswählen

print [max(a,b)for a,b in zip([1,2,4],[6,1,1])]
bzw. diese Konstruktion:

Code: Alles auswählen

print map(max,zip([1,2,4],[6,1,1]))
Nettes Feature, nicht?
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

hendrikS hat geschrieben:Nettes Feature, nicht?
Jup, habs auch erst vor einigen Wochen entdeckt. :D
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Mapcar gibt es in Lisp schon seit Ewigkeiten. Ich hätte jetzt gerne behauptet, dass stände so schon im LISP 1.5 Manual von 1962, aber da fand ich die Funktion nicht. Aber ich hoffe, spätestens bei Interlisp von 1974 sollte man fündig werden. Da das PDF nur ein schlechter Scan ist, der nicht durchsuchbar ist, hoffe ich, das niemand meine Behauptung sofort widerlegen kann :) Für CommonLisp von 1984 kann ich aber die Hand ins Feuer legen. Das ist immer noch fast 10 Jahre vor Python.

Stefan
Benutzeravatar
snafu
User
Beiträge: 6862
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@sma:

Sagt ja auch keiner, dass Python eine bahnbrechende Erfindung gemacht hat. Es wird einfach so sein, dass viele Leute dieses Feature noch nicht kannten. Nicht mehr und nicht weniger. ;)
Antworten