[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