[Python-de] lazy evaluation mit yield

Mark Zoeltsch zoeltsch at mooniewar.de
Fri Apr 19 18:53:38 EDT 2002


ok ich kanns nicht lassen, wie waers hiermit?

from __future__ import generators

def xmap(funktion, *sequenz):
    """
    lazy map, like map(fn, *seqs), but yields the results one at a time.
    """
    anzargs = len(sequenz) #Anzahl der uebergebenen Argumente
    itseq = map(iter,sequenz) #Liste mit Iterator(en) auf die Sequenzen

    while 1:
        args=[]
        nok=0

        for it in itseq:
            try:
                args.append(it.next())
            except StopIteration:
                args.append(None)
                nok += 1
                if nok == anzargs:
                    raise StopIteration

        yield funktion(*args)

if __name__ == '__main__':
    for i in xmap(lambda *x:x, xmap(lambda *x:x, range(2),range(4)),range(6)):
        a = print i,


SEE yA





More information about the Python-de mailing list