Mathematica相当于Ruby的注入

时间:2010-06-02 23:54:32

标签: functional-programming wolfram-mathematica

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

list.inject(1) { |prod,el| prod * el }

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

Apply[Product, list]

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

1 个答案:

答案 0 :(得分:7)

等效于Fold。 我认为这通常被称为“减少” - 无论如何,这都是Python名称。

翻译你的例子:

Fold[#1*#2&, 1, list]

#1*#2&是一个二进制lambda函数,它将其参数相乘。 在这种情况下,您只需使用Times

Fold[Times, 1, list]

当然,只需将Times应用于列表:

Apply[Times, list]

或简称:

Times @@ list

注意:您使用Product而不是Times的问题中的版本将无效。 Product用于其他内容,即类似Sum