Seite 1 von 1

Verfasst: Montag 21. Juli 2008, 13:30
von BlackJack
Der Unterschied ist das Nachschlagen der Funktion; bei `map()` wird `os.stat` bzw. `int` nur *einmal* nachgeschlagen, bei der LC *für jedes Element*.

Verfasst: Montag 21. Juli 2008, 13:37
von mkesper
Noch ein unerwarteter Effekt:
Ich hatte den Code versucht auszuführen, mich aber gewundert, daß er scheinbar loopt und bin erst nach nach mehrmaligem Ausprobieren darauf gekommen, daß die erste Zeile

Code: Alles auswählen

#!/bin/bash
statt

Code: Alles auswählen

#!/usr/bin/python
lautete. D'oh!

Verfasst: Montag 21. Juli 2008, 13:49
von Leonidas
BlackJack hat geschrieben:Der Unterschied ist das Nachschlagen der Funktion; bei `map()` wird `os.stat` bzw. `int` nur *einmal* nachgeschlagen, bei der LC *für jedes Element*.
Ja, diese Vermutung hatte ich ab irgendeinem Zeitpunkt auch. Das finde ich dennoch recht erstaunlich, dass die LC die Referenzen auf die Funktionen nicht irgendwo für schnellere Verwendung zwischenspeichert.

Verfasst: Montag 21. Juli 2008, 14:32
von Zap
Leonidas hat geschrieben:Das finde ich dennoch recht erstaunlich, dass die LC die Referenzen auf die Funktionen nicht irgendwo für schnellere Verwendung zwischenspeichert.
Mich wunderts auch das es in Summe so lange dauert den Namen immer wieder neu zuzuordnen.
Aber bei einer LC ist dies nötig da man ja auch den Funktionsnamen wärend der Bearbeitung neu binden kann.
Z.B für so nen Blödsinn ;)

Code: Alles auswählen

In [27]: [f(i) for i in range(10) for f in [[str, int][i % 2]] ]
Out[27]: ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9]

Verfasst: Montag 21. Juli 2008, 19:25
von RedSharky
Danke für die große Hilfsbereitschaft.
Kaum ist man mal einen Tag nicht da, geht's zu wie im Taubenschlag. :)
Da sind wirklich ein paar interessante Lösungen dabei, die mir gänzlich unbekannt sind. Danke!