有谁知道如何从以前版本的Python这HOF转换到Python 3?
apply_each = lambda fns, args=[]: map(apply, fns, [args]*len(fns))
这来自于本书名为:文字处理在Python由戴维·梅茨。我不能够使用应用功能在Python 3,因为它已被弃用。我已经使用FUNC(* ARGS,** kwargs),而不是应用(FUNC,ARGS,kwargs)试过,但我得到这个类型错误: '浮动' 对象不是可迭代。我还发现那些表现出什么样的功能,应该返回笔记:https://wiki.python.org/moin/TextProcessingInPython
这里是我尝试在代码:
apply_each = lambda fns, args=[]: map(fns, *args)
args = [5.4, 6.3, 6.3]
print(list(apply_each(approx, args)))
您可以定义自己的.apply
:
>>> def apply(f, args):
... return f(*args)
...
>>> apply_each = lambda fns, args=[]: map(apply, fns, [args]*len(fns))
或全部一气呵成:
apply_each = lambda fns, args=[]: map(lambda f, args: f(*args), fns, [args]*len(fns))
但是,这是作风差,拉姆达的唯一好处是,它是匿名的,如果你打算把它分配给一个名字,那失败的目的。这是更好的方式:
def apply(f, args):
return f(*args)
def apply_each(fns, args=()):
return map(apply, fns, [args]*len(fns))
所以:
>>> import operator as op
>>> list(apply_each([op.add, op.sub, op.mul, op.truediv], args=[1,2]))
[3, -1, 2, 0.5]