And a (not very robust) version which works with keyword arguments too:
def threaded(f):
from functools import wraps
def wrapper(*args, **kwds):
n = max(map(len, args) + map(len, kwds.values()) + [0])
if n == 0:
return []
new_args = zip(*args) if len(args)>0 else [()]*n
items = kwds.items()
new_kwds = [ dict((key, value[i]) for key,value in items) for
i in range(n)]
return [f(*new_args[i], **new_kwds[i]) for i in range(n)]
return wrapper
sage: f = a*x^2+b
sage: tf = threaded(f)
sage: tf(a=v, x=w, b=z)
[43, 80, 117]
sage: tf(a=w, x=z, b=v)
[145, 182, 219]
--Mike
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---