[Python-de] lazy evaluation mit yield

Mark Zoeltsch zoeltsch at mooniewar.de
Thu Apr 18 23:12:41 EDT 2002


Hallo!

Ich hab vor einiger Zeit Peter Norvig's IAQ 
(http://www.norvig.com/python-iaq.html) gefunden,
und habe dort seine Implementation einer xmap mittels
generator gefunden:


from __future__ import generators

def xmap(funktion, *sequenz):
    #etwas modifiziert von mir
    print type(sequenz),sequenz
    sequenz = map(iter,sequenz) #sequenz ist jetzt ein Iterator
    while 1:
        yield funktion(*map(lambda sequenz:sequenz.next(), sequenz))

so jetzt frag ich mich wieso er es so programmiert,
ich muss dazu erwaehnen das mir dieses * vor sequenz
bzw. vor map nicht ganz geheuer ist, ich weiss zwar 
was es letztendlich bewirkt, kenn aber nicht ganz das warum 
(hat dieses * in diesem Zusammenhang eine bestimmte Bezeichnung?
Ich hab in der Literatur bisher nichts finden koennen, nicht mal eine
Erwaehnung das es sowas ueberhaupt gibt...ich lese die falschen
Buecher...)
Jedenfalls kommt es mir umstaendlich vor, aber das hat sicherlich
seinen Grund

Da ich nicht ganz verstehe warum so, hab ich mal
meine Version gebastelt:

def xmap2(funktion, sequenz):
    for e in sequenz:
        yield funktion(e)

und frag mich jetzt was dagegen spricht, sicherlich irgendwas aber was?


SEE yA





More information about the Python-de mailing list