我试图将我的Javascript撰写函数翻译成Python,但我对最后一个有问题。我如何推广未知数量的函数?
读完本文后,我想避免使用reduce()
方法。
/* compose functions */
const comp1 = (fn2, fn1) => arr => fn2(fn1(arr)) // 2 functions, one array
const comp2 = (fn2, fn1) => (...arrs) => fn2(fn1(...arrs)) // 2 functions, multiple arrays
const comp3 = (...fns) => (...arrs) => fns.reduceRight((v,f) => f(v), arrs) // multiple functions, multiple arrays
蟒蛇:
/* compose functions */
comp1 = lambda fn2,fn1: lambda arr: fn2(fn1(arr)) # 2 functions, 1 array
comp2 = lambda fn2,fn1: lambda *arrs: fn2(fn1(*arrs)) # 2 functions, multiple arrays
comp3 = lambda *fns: lambda *arrs: ????
感谢所有的改进。。。
这里有一个很好的变量组合,可以帮助从右到左的函数组合——它适用于0、1或更多函数
def identity (x):
return x
def compose (f = identity, *gs):
if not gs:
return f
else:
return lambda x: f (compose (*gs) (x))
def double (x):
return x * 2
def add1 (x):
return x + 1
# identity (5)
compose () (5) # 5
# print (5)
compose (print) (5) # 5
# print (add1 (5))
compose (print, add1) (5) # 6
# print (add1 (double (5)))
compose (print, add1, double) (5) # 11
# print (add1 (double (double (5))))
compose (print, add1, double, double) (5) # 21
要使其支持可变参数,只需更新lambda–粗体更改
def identity (x):
return x
def compose (f = identity, *gs):
if not gs:
return f
else:
return lambda *xs: f (compose (*gs) (*xs))
def mult (x,y):
return x * y
def double (x):
return mult (2, x)
# print (double (double (mult (2, 3))))
compose (print, double, double, mult) (2,3) # 24
如果你真的不想使用减少
,我相信这是正确的方法,你可以有一个循环。尽管如此,这阻止您使用lambda
。
def compose(*fns):
def composed(*args, **kwargs):
output = fns[-1](*args, **kwargs)
for fn in reversed(fns[:-1]):
output = fn(output)
return output
return composed
我想再次声明,没有理由不使用减少
,因为上面只是减少的具体实现。组成是一种减少。
from functools import reduce # Only required in Python3 where reduce was moved
def compose(f1, f2):
return lambda *args, **kwargs: f1(f2(*args, **kwargs))
def compose_many(*fns):
return reduce(compose, fns, lambda x: x)
我正在尝试将我创建的ImageVector图标(例如,创建为图标Default.Home)添加到Google Maps中的标记中。我目前拥有的是: 我发现,BitmapDescriptorFactory可以通过传递资源或位图(分别是BitmapDescriptorFactory.fromResource(resourceId:Int)和BitmapDescriptorFactory)来创建请求的B
问题内容: 好的,所以我试图用“,”分割字符串,它们不在’[‘或’]’内部。我有一个适用于JavaScript的RegEx,但无法将其转换为Java语法。 JS RegEX: 例句: 它在http://refiddle.com上运行良好,但是当我尝试在Java中(在Eclipse下)使用RegEx时,出现错误消息: 索引10附近的未封闭字符类,(?![^ [] *]) 我所做的就是删除开头的“ /
我有一个R的聚合函数: 我想将这段代码转换成python并获取数据帧。我怎样才能做到?
问题内容: 我有一个包含几个整数的数组。我已经向数组添加了一些值,但是现在我需要通过jQuery的方法将此数组发送到页面。如何将其转换为JSON对象进行发送? 问题答案: 并致电: 注意: _JSON对象现在是大多数现代Web浏览器(IE 8及更高版本)的一部分。
问题内容: 我如何以这种格式转换PHP数组 到以下格式的Javascript数组? 问题答案: 安全声明: 您不再需要以下内容 如果您没有PHP 5.2,则可以使用以下代码:
问题内容: 我正在使用PHP和JavaScript。我的JavaScript代码包含一个函数get_data(): 现在我有以下PHP代码。 如何将JavaScript函数数据分配给PHP变量? 问题答案: 使用jQuery将JavaScript变量发送到您的PHP文件: 在你的PHP代码,让你的变量从与这样的: