Mathematica相当于Ruby的注入

Sop*_*ert 3 functional-programming wolfram-mathematica

是否有类似injectRuby 的Mathematica函数?例如,如果我想要列表中元素的产品,在Ruby中我可以写:

list.inject(1) { |prod,el| prod * el }
Run Code Online (Sandbox Code Playgroud)

我发现我可以Product在Mathematica中使用:

Apply[Product, list]
Run Code Online (Sandbox Code Playgroud)

然而,这对我来说不够通用(如果我不只是想要产品或数字的总和).什么是最接近的inject

dre*_*ves 7

相当于折叠.我认为这通常被称为"减少" - 无论如何,这就是Python名称.

翻译你的例子:

Fold[#1*#2&, 1, list]
Run Code Online (Sandbox Code Playgroud)

#1*#2&是一个二进制lambda函数,它的参数倍增.在这种情况下,您可以使用Times:

Fold[Times, 1, list]
Run Code Online (Sandbox Code Playgroud)

或者当然只是申请Times到列表:

Apply[Times, list]
Run Code Online (Sandbox Code Playgroud)

或者,简而言之:

Times @@ list
Run Code Online (Sandbox Code Playgroud)

注意:您使用Product而不是Times的问题中的版本将不起作用. 产品用于其他东西,即Sum的类比.