有人知道如何将此HOF从早期的Python版本转换为Python 3吗?
apply_each = lambda fns, args=[]: map(apply, fns, [args]*len(fns))这来自于David的书“:Python中的文本处理”。我无法在Python 3中使用apply函数,因为它已经被废弃了。我尝试过使用func(*args,**kwargs)而不是apply(func,args,kwargs),但是我得到了这个TypeError:'float‘对象是不可迭代的。我还找到了一些说明函数应该返回的内容的注释: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)))发布于 2019-02-03 19:19:15
您可以定义自己的.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))但是这是糟糕的风格,lambda的唯一优点是它是匿名的,如果您要将它分配给一个名称,这就违背了目的。这是更好的风格:
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]https://stackoverflow.com/questions/54506540
复制相似问题